Começando a programar em c , duvidas e curiosidades

20/10/2006

1

Olá amigos. Estou começando a programar em c++ como hobby, pra aprender. Estou usando o borland c++ builder express (o novo que é gratis).

Fiz um pequeno mediaplayer com playlist em interbase+dbxpress e o componenete Tmediaplayer, demorei 2 dias pra me acostumar, e isso me despertou umas curiosidades. Como eu programo em Delphi a muito tempo, por mais que eu queira, é inevitavel surgirem comparações, embora esse não seja meu objetivo.

curiosidades:
1) Tanto o Delphi como o C++ Builder tem a VCL, mas eu li num outro tópico que a VCL foi toda escrita em object pascal e que o c++ builder acessa ela. A VCL do c++ builder não foi escrita em c++? como poderia ser escrita em object pascal ???

2) Eu conheço o básico de c/c++ que aprendi na escola, embora na escola eu tenha treinado com o compilador turbo c++ 3.0 que tambem é da borland e não é de c, é c++. O fato de o c++ ser uma evolução do c significa que ele suporta os comandos/funções antigos do c? ou c e c++ são duas linguagens completamente diferentes? posso usar compilador de c++ pra fazer programas estritamente em c?

3) para acessar ou exibir num showmessage um item de uma lista eu usei:
FileListBox1->Items->operator [](j)

só consegui fazer assim por causa da ajuda do ´code completion´, se não eu estaria até hoje batendo cabeça. No delphi eu faria assim:
FileListBox1.Items[j]

O que é e como usa o tal do operator que eu nunca vi isso em nenhum livro de C/c++ que eu tenha visto? tá certo o jeito que eu fiz? tem algum jeito mais parecido com Delphi?

4) Ao rodar o programa dum micro sem o borland c++ builder instalado, ele pediu a cc3270.dll. Tem como ele não pedir essa dll?

Valew pela ajuda!


Responder

Posts

23/10/2006

Rodc

[quote:4c8b09e667=´vitor^_^´]1) Tanto o Delphi como o C++ Builder tem a VCL, mas eu li num outro tópico que a VCL foi toda escrita em object pascal e que o c++ builder acessa ela. A VCL do c++ builder não foi escrita em c++? como poderia ser escrita em object pascal ???[/quote:4c8b09e667]
A VCL do C++ Builder é em pascal. Acredite!!! Tem embutido no BCB um compilador de pascal. Quando você vai fazer um novo componente em BCB, você pode fazer o componente tanto em C++ como em Pascal. Ele compila os dois. Possivelmente a Borland ficou com preguiça de refazer todo o código da VCL para C++.
[quote:4c8b09e667=´vitor^_^´]2) O fato de o c++ ser uma evolução do c significa que ele suporta os comandos/funções antigos do c? ou c e c++ são duas linguagens completamente diferentes? posso usar compilador de c++ pra fazer programas estritamente em c?
[/quote:4c8b09e667]
Os comandos de C continuam sendo aceitos em C++. Mas é claro que em uma aplicação visual você não vai fazer um GetCh(), vai usar um InputBox(). E nem em uma aplicação console (DOS) vai fazer um ShowMessage(), vai usar o printf().
Quando vai criar uma nova aplicação console o BCB lhe pergunta se você quer fazer uma aplicação em C Ansi ou em C++.
[quote:4c8b09e667=´vitor^_^´]3) para acessar ou exibir num showmessage um item de uma lista eu usei:
FileListBox1->Items->operator [](j)

só consegui fazer assim por causa da ajuda do ´code completion´, se não eu estaria até hoje batendo cabeça. No delphi eu faria assim:
FileListBox1.Items[j]

O que é e como usa o tal do operator que eu nunca vi isso em nenhum livro de C/c++ que eu tenha visto? tá certo o jeito que eu fiz? tem algum jeito mais parecido com Delphi?[/quote:4c8b09e667]
O comando certo para pegar o texto de um item no listbox é assim:
FileListBox1->Items->Strings[j];

Se não me engano, no Delphi também é assim! A forma que você fez também funciona. Na verdade, o evento Strings[j] chama o método que você usou.
[quote:4c8b09e667=´vitor^_^´]4) Ao rodar o programa dum micro sem o borland c++ builder instalado, ele pediu a cc3270.dll. Tem como ele não pedir essa dll?[/quote:4c8b09e667]
No Delphi o executável já sai pronto para enviar para o cliente. No C++ não! Para enviar ao cliente você precisa acessar a guia ´Compiler´ das opções do projeto e clicar no botão ´Release´. E na guia ´Packages´ desmarque a opção ´Build with run time packages´. Vale lembrar que com isto, você não conseguirá debugar o programa.


Responder

24/10/2006

Vitor Rubio

Legal, não sabia de nada disso ^^

Isso quer dizer que eu posso pegar uma classe feita em pascal e criar um descendente pra ela em c++ e vice versa?

quanto ao compilador, bom, na pasta Borland\BDS\4.0\Bin do c++ builder 2006 tem o programa bcc32.exe que eu acredito que seja o compildor de C++. Mas não tem um dcc32.exe igual no delphi. Isso quer dizer que o proprio bcc32.exe compila pascal internamente?


Responder

24/10/2006

Rodc

Nunca tentei implementar apenas uma classe do Pascal no C++. Sempre uso as classes como componentes e o próprio BCB se responsabiliza em criar o vínculo, que é o arquivo .hpp (Um Header para o arquivo pascal). Talvêz se você criar este arquivo na mão vai funcionar. Quando você usar um componente feito em Pascal você não faz o include da DCU ou do PAS, você faz include do HPP dele.

Usar C++ do Delphi eu não sei se é possível. Talvêz neste nova versão que os dois estão unidos em apenas uma IDE funcione. Mas esta eu passo para os universitários...


Responder

24/10/2006

Vitor Rubio

e o que quer dizer a palavra reservada __fastcall?


Responder

24/10/2006

Rodc

Não entendo totalmente o que __fastcall faz, mas pelo que entendi ele faz a passagem de parâmetros ficar mais rápida. Ele fala para o sistema deixar os três primeiros parâmetros da função na cache do processador, para a próxima vêz que for chamado o acesso ser mais rápido. Acho que é isso!
Lembrei agora de um site que explica BCB bem legal... www.dicasbcb.com.br. Não tira as dúvidas mais obscuras mas tem um passo-a-passo bem legal de ler (e aprender). Mas pode continuar perguntando que o que eu souber eu compartilho.
Abraços,


Responder

13/12/2007

Docdoc

Pena eu pegar essa discussão já depois de uma ano mas se alguem for ver isso só uma curiosidade:

No delphi as classes são criadas de forma distinta das de C++, tem a ver com a tabela de funções virtuais, mas tá claro que vc poderá usar as classes descendentes de TObject em C++ da Borland, o que não significa o mesmo para outro compilador C++.


Responder

14/12/2007

Massuda

O CBuilder é um compilador que usa uma versão ligeiramente modificada da linguagem C/C++ para poder acomodar a VCL feita em Object Pascal. Sei que tem limitações (não lembro agora) no que pode ser feito no Delphi e usado no CBuilder e vice-versa, por isso certos componentes VCL acabam tendo versões próprias para Delphi e CBuilder.


Responder

14/12/2007

Vitor Rubio

Eu acho que a dúvida do colega, que é muito interessante, é a seguinte:

1) Para quem está acostumado com delphi, encontrará um ambiiente familiar no c++ builder, não no que ediz respeito à sintaxe e semanntica da linguagem, mas a semelhança está sim nos nomes de classees, bibliotecas e funcoes/métodos

2) Creio que tudo o que você faria num compilador c++ pra windows 32 de uma empresa concorrente, tipo o visual c++, você também poderia fazer/compilar em borland c++, desde que só usasse código c++ nativo e nenhuma biblioteca de terceiros (a não ser que sejam suas biblioptecas pessoais)


Responder