Ir ao conteúdo
  • Cadastre-se

Delphi para c++


murinus

Posts recomendados

Ola, programo em delphi a uns 6 anos, e hoje decidi a aprender c++ pois nao tenho licenca pro delphi, hoje ele reolveu desativa, estou querendo aprender c faz um bom tempo e acho que essa é a hora, já li varias coisas e conheco o basico, gostaria de deixar este topico aberto para tirar pequenas duvidas

 

No delphi era muito utilizado as units, onde voce podia escrever suas funcoes, e utilizar em qualquer outro aplicativo, e funciona mais ou menos assim

Unit nome unituses nome das librarys que a unit vai usarinterface cabecalho das funcoes e proceduresimplementation implementacao das funcoes e procedures declaradasend.

no c acredito que seja até mais simples,queria saber, o que seria um equivalente a unit do delphi?

 

Declarei um array

 short meuarray[7] // tamanho 7 index de 0 a 6 meuarray[7] = 0;

por que é possivel alimentar e ler valores de um local maior que o tamanho do array?, posso corromper dados, do meu ou de outros applicativos? no que devo me preocupar quando utilizar arrays? e arrays dinamicos, pode causar algum problema na memoria se eu mudar seu tamanho varias vezes? quando eu mudo o tamanho, eu perco os dados?

 

 

Declarei uma constante para um diretorio

conststring meudiretorio "C++\projetos\meuapp\";cout << meudiretorio << endl;

porque o cout resulta em C++projetosmeuapp ao invés de C++\projetos\meuapp\? e 

é seguro trabalhar com string em c? ou é melhor utilizar um array de char?

 

Obrigado. tenham uma boa noite 

Link para o comentário
Compartilhar em outros sites

quase tudo que voce perguntou depende,o que seria bom voce ler é o que é standard e o que nao é na linguagem,alguns  termos padrões usados,e provavelmente essas perguntas que voce fez seriam respondidas
 

aqui tem ja com a padronização c++11

http://en.wikipedia.org/wiki/C%2B%2B11

 

essa pagina do velho tambem é muito boa,explica todas as novas caracteristicas e diferenças do c++11 para o 98

http://www.stroustrup.com/C++11FAQ.html

 

apesar de ser só um rascunho ainda sim pode ajudar

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf

 

 

porque o cout resulta em C++projetosmeuapp ao invés de C++\projetos\meuapp\? e 

é seguro trabalhar com string em c? ou é melhor utilizar um array de char?

 

geralmente barra invertida '\' espera um próximo caractere pra fazer o seu efeito,nesse caso teria que ser "\\"


claro que isso tudo seria bom depois que voce tiver lido um bom livro introdutório sobre a linguagem

Link para o comentário
Compartilhar em outros sites

Entendo que tenho que ler um monte de coisa ainda, mas só esse rascunho tem 1300 paginas, e eu me conhecendo bem aprendo mais rápido praticando,e já tenho muita experiencia com linguagem de programacao e logica, apenas gostaria que respondesse essas duvidas, e obviamente irei ler mais sobre no futuro

valeu pela atencao

Link para o comentário
Compartilhar em outros sites

ta bom..realmente algumas coisas(a maioria)voce só aprende quando vai praticando..é que algumas coisas são implementadas dependentes do compilador e outras são normas da linguagem,então ficaria mais fácil pra voce diferenciar o que pode dar errado e o que nao pode

As funções em C++ geralmente tem essa assinatura

tipo nomefuncao (parametros)

tambem tem outras coisas como especificadores de linguagem e algumas palavras chaves pra caracterizar a função

por que é possivel alimentar e ler valores de um local maior que o tamanho do array?

 

depende

 

posso corromper dados, do meu ou de outros applicativos?

do seu sim,outros aplicativos quer dizer outros processos?(se for,nao,mas isso depende da arquitetura do processador e do modo que voce ta executando o programa,isso nao tem a ver com a linguagem nao..)

 

no que devo me preocupar quando utilizar arrays?

basicamente com o tipo e estar entre os limites do array(mas isso depende x) )

 

e arrays dinamicos, pode causar algum problema na memoria se eu mudar seu tamanho varias vezes?quando eu mudo o tamanho, eu perco os dados?

 

se o tamanho da pilha do programa puder suportar o tamanho do novo bloco nao tem problema,em C++ voce perde os dados quando voce libera a memória,voce teria que deixar o dados em algum lugar,alocar memória novamente pro tamanho que voce quer e passar esses dados de volta pro novo array dinamico com o tamanho atual,isso é o que chamam de resize

Link para o comentário
Compartilhar em outros sites

Sobre a questão dos arrays/vetores, a linguagem C não verifica nada. Isso é responsabilidade do programador, você que tem que garantir que seu programa não vai atribuir valor a um índice maior que o declarado.

 

Sobre corromper os dados de outros programas, isso não acontece pois os sistemas operacionais atuais operam em modo protegido. Portanto um programa "mal comportado" será encerrado pelo sistema operacional se tentar violar o espaço alocado a outro aplicativo. Mas no seu aplicativo pode acontecer reações inesperadas.

 

Em relação ao trecho:

string meudiretorio "C++\projetos\meuapp\";

 

Em linguagem C/C++ o caractere \ é considerado especial. Por exemplo: \n é a notação de C de caractere de nova linha. Para resolver o caso acima, você terá que colocar \\.

Link para o comentário
Compartilhar em outros sites

opa, me surgiu uma nova duvida aqui, tentei passar o valor de varias maneiras, mas agora complicou

 

tenho essas 

struct Struct1 {  __int8 value1;  __int8 value2; }struct Struct2 {   Struct1  Structure;    int ivalue; }void AlimentaStruct(Struct1 *Structure) {  *Structure.value1 = 0; // eu passo o parametro apontando pra minha estrutura  *Structure.value2 = 1; // mas nao permite associar os valores}int main() {    struct2 MyStruct;    AlimentaStruct(&MyStruct.Structure);    return 0;}

qual operador devo usar pra poder associar os valores as variaveis da struct?

Obrigado


ok, usei Structure->value1 = 0;

e funcionou =D

valeu

Link para o comentário
Compartilhar em outros sites

Opa, me surgiu mais uma duvida xD

 

eu tenho essas structures

struct tcFrameConfig {    int           NameF;     int           NameP;    int           NameH;    unsigned __int8 Length;    unsigned int  Duration; };struct tcFrameStimulus {    short Key; };struct tcFrame {    tcFrameConfig      Config;    tcFrameStimulus* Stimulus; };void main() { tcFrame Frame1; tcFrame Frame2; Frame1.Config.NameF = 0; Frame1.Config.NameP = 0; Frame1.Config.NameH = 0; Frame1.Config.Length = 4; Frame1.Config.Duration = 100; Frame1.Stimulus = new tcFrameStimulus[Frame1.Config.Length]; Frame1.Stimulus[0] = 0; Frame1.Stimulus[1] = 1; Frame1.Stimulus[2] = 40; Frame1.Stimulus[3] = 43; // ok inicializer o Frame1; // agora... se eu fizer: Frame2 = Frame1; // o compilador nao aponta como erro // mas pelo que entendi com algumas leitura que fiz, // o programa nao sabe o tamanho do array no Frame1 // entao eu devo fazer assim? int iStimulus; Frame2.Config = Frame1.Config; Frame2.Stimulus = new tcFrameStimulus[Frame2.Config.Length]; for (iStimulus = 0; iStimulus < Frame2.Config.Length; iStimulus++) { Frame2.Stimulus[iStimulus] = Frame1.Stimulus[iStimulus]; } // ou para ser mais pratico, posso fazer assim? Frame2.Stimulus = new tcFrameStimulus[Frame1.Config.Length]; Frame2 = Frame1;}
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!