Logo Hardware.com.br
leandrocp
leandrocp Super Participante Registrado
574 Mensagens 0 Curtidas

Pascal: SetLenght() e Operador " ^ "

#1 Por leandrocp 23/08/2005 - 16:22
Bom galera, estou com um probleminha aqui, nesse código:

Primeiro, meu compilador:

Free Pascal Compiler version 2.0.0 [2005/05/30] for i386


E o source:


var
minhaMatriz : array of integer;
tamanho : integer;

...

tamanho := 10;

SetLenght( minhaMatriz, tamanho ):


Fazendo isso, está dando Runtime Error, a dúvida: não pode ser uma VAR ali na função SetLenght ?

E sobre ponteiros( " ^ " ), alguém poderia dar um exemplo simples de como usar em Pascal (em C eu sei como usar).
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
#2 Por jqueiroz
23/08/2005 - 16:52
No tempo em que eu usava Pascal não existia essa construção "SetLength()". Ou se existia era mto na encolha.

Sobre os ponteiros, o uso é quase idêntico ao C. Com algumas restrições:

1) Não há aritmética nem conversão de ponteiros em Pascal.

2) Ao contrário de C, o operador "^" tem precedência sobre o operador ".". Assim, para acessar um campo de um record com um ponteiro, você usa

^ponteiro.campo

Já em C, você teria que fazer

ponteiro->campo ou (*ponteiro).campo

3) A alocação de memória para o ponteiro aloca elementos, não bytes. Então, se vc tem um ponteiro do tipo

var pont1 : ^boolean; pont2 : ^array[1..10] of integer;


E faz

pont1 := new;
pont2 := new;

Você vai alocar memória suficiente pra 1 boolean, no primeiro caso, e memória suficiente pra um array de 10 inteiros, no segundo caso.

(Estou acertando a sintaxe? Tem milênios que não programo em pascal --- apesar de que tem coisas que a gente nunca esquece, como andar de bicicleta).
"chmod 777 nunca ajudou ninguém" (c) 2002-2021 JQueiroz/FGdH
Conheça o Blog do Zekke
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal