Dúvida sobre os executáveis gerados...

Delphi

09/04/2007

1) Tenho uma dúvida sobre os executáveis gerados pelo Delphi. Imagine uma unit assim:

unit Unit1;

interface

uses Windows, Messages, SysUtils, Variants, Classes;


Quando compilamos essa unit (gerando unit1.dcu), a unit Windows, Messages, SysUtils, Variants e Classes estão compiladas dentro de unit1.dcu, ou seja, o arquivo unit1.dcu contém todas as units do uses?

Quero saber isso pelo seguinte: Todos os forms de um projeto obrigatoriamente devem ter declarado na cláusula uses a unit ´Forms´.

Quando o delphi compila e gera as dcus de todas as units que são forms, nós temos várias cópias de Forms.pas dentro de cada um dos arquivos dcu gerados?

E na hora de gerar o executável? O delphi simplesmente junta dentro do arquivo todas as dcu´s do projeto? Sendo assim, no executável final também teríamos várias cópias das mesmas units. Ou não?

Estive pensando nisso porque finalmente estou criando funções e procedures globais que são
usadas em várias partes do programa. Só que inicialmente para fazer testes, declarei as funções
na unit principal do projeto, ou seja, quase todos os forms usam essa unit.

2) Agora já uma dúvida beeeeeem mais básica que a anterior (eu acho): Todos sabem
que o executável compilado está em linguagem de máquina, certo? Ou seja, 0 (zero) e 1 (um).
Por que então ao abrirmos um executável com um editor de textos (Wordpad, bloco de notas)
vemos um monte de caracteres estranhos ao invés de uma sequência de 0 e 1?

valeu pela ajuda pessoal!


Djorius

Djorius

Curtidas 0

Respostas

Titanius

Titanius

09/04/2007

1) Tenho uma dúvida sobre os executáveis gerados pelo Delphi. Imagine uma unit assim:
unit Unit1;

interface

uses Windows, Messages, SysUtils, Variants, Classes;
Quando compilamos essa unit (gerando unit1.dcu), a unit Windows, Messages, SysUtils, Variants e Classes estão compiladas dentro de unit1.dcu, ou seja, o arquivo unit1.dcu contém todas as units do uses? Quero saber isso pelo seguinte: Todos os forms de um projeto obrigatoriamente devem ter declarado na cláusula uses a unit ´Forms´. Quando o delphi compila e gera as dcus de todas as units que são forms, nós temos várias cópias de Forms.pas dentro de cada um dos arquivos dcu gerados?


Se você utiliza o Forms na unit de todos os Forms seu, ele somente incluirá 1 vez, ou seja, você criando seu arquivo de funções (o que aconselho), mesmo que você use ele em todos os seus Forms, ele será adicionado apenas uma unica vez... e somente as funções utilizadas nele.. ou seja, se você tem 100 funcoes nele, e soh usou 1 função, somente ela será adicionada... você pode observar, que ao compilar, fica cheio de bolinhas azuis do lado esquerdo do código, os que não tiverem a bolinha azul, nao foi compilado, porque não existe referencia para ele em lugar algum da aplicação.

2) Agora já uma dúvida beeeeeem mais básica que a anterior (eu acho): Todos sabem que o executável compilado está em linguagem de máquina, certo? Ou seja, 0 (zero) e 1 (um). Por que então ao abrirmos um executável com um editor de textos (Wordpad, bloco de notas) vemos um monte de caracteres estranhos ao invés de uma sequência de 0 e 1? valeu pela ajuda pessoal!


Na verdade, ele está em linguagem de máquina, e por isso nao se vê 0 e 1.. :D


Espero ter elucidado um pouco..

[]s


GOSTEI 0
Djorius

Djorius

09/04/2007

Não entendi a segunda.
Se está em linguagem de máquina (0 e 1) ao abrir o executável
não deveríamos visualizar algo tipo:

00010110100100101010101010101001010000100101010

ao invés dos caracteres estranhos?
aparentemente a lógica é inversa, mas não entendi o porquê...
quero dizer... porque 0 e 1 não é visualizável e é mostrado com
´n´ caracteres diferentes se na verdade só existem dois caracteres
ali (0 e 1)?

Talvez seja algo meio complicado de se explicar. Caso realmente
seja, se alguém puder indicar alguma leitura que me faça entender
isso, eu agradeço.

E obrigado ao titanius pela grande ajuda!


GOSTEI 0
POSTAR