Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MatheusWC

Arrays no Delphi

Recommended Posts

Bom dia, gostaria de entender melhor o uso dos Arrays no Delphi...

 

Por exemplo, vou criar um array de strings declaro assim:

Ver_Mascaras: array of String;

Ai presiso setar o 'tamanho' delas..

SetLength(Ver_Mascaras, 120);

Agora posso ir atibuindo valores...

Ver_Mascaras[0] := 'string1';Ver_Mascaras[1] := 'string2';Ver_Mascaras[2] := 'string3';

Para olhar...

ShowMessage(Ver_Mascaras[1]);

 

Ai estou com algumas dúvidas:

 

- Como posso 'automaticamente' ir adicionando valores no array mas sem presisar especificar a posição, ai ele vai adicionando por ordem...

 

- Como posso pegar a string da ultima posição?

 

Abração;

Matheus

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posso te dar uma dica? Utilize um TStrings

 

procedure TForm1.Button1Click(Sender: TObject);var  Texto : TStrings;begin  Texto := TStringList.Create;  Texto.Add('1');  Texto.Add('2');  Texto.Add('3');  ShowMessage(Texto.Strings[Texto.Count-1]);  FreeAndNil(Texto);end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

no caso, fiz um exemplo bem básico aqui embaixo...

 

mas ai depende de você...

 

no caso o exemplo tem um array dinâmico.. ele cresce conforme você for inserindo infos nele...

 

ta ai o exemplo:

 

procedure TForm1.FormCreate(Sender: TObject);var arraydestring : array of string;	i : Integer;begin  For i := 0 to 10 do  Begin	SetLength(arraydestring,Length(arraydestring) + 1);	arraydestring[Length(arraydestring) - 1] := 'Teste '+IntToStr(i);  end;  For i := 0 to 10 do  Begin	showmessage(arraydestring[i]);  end;end;

 

espero ter ajudado...

 

 

abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hummm, legal, gostei, vou tentar aqui...

 

Por exemplo, quero usar isso para guardar strings, pra depois ele conferir antes de adicionar uma string, pra não adicionar strings iguais no banco.

 

Ai eu tenho uma string na variavel 'Mascara', como faria para ver se já tem uma string igual a essa dentro do TStringList??

 

Abraços;

 

 

 

editado: demorei pra postar ai n vi o ultimo post, hehe...

Uma dúvida, tem como parar um for? tipo:

for i:=Low(Ver_Mascaras) to High(Ver_Mascaras) dobegin	  if Ver_Mascaras[i] <> Mascara then			Fazer_tal_coisa(Mascara);			Ver_Mascaras[High(Ver_Mascaras)+1] := Mascara;			Encerrar_o_for();end;
Tem como encerrar o for?

Compartilhar este post


Link para o post
Compartilhar em outros sites
procedure TForm1.Button1Click(Sender: TObject);var  Texto : TStrings;  iTemp : Integer;begin  Texto := TStringList.Create;  Texto.Add('1');  Texto.Add('Mascara');  Texto.Add('3');  ShowMessage('Último: '+Texto.Strings[Texto.Count-1]);  iTemp := Texto.IndexOf('Mascara');  if (iTemp = -1) then	ShowMessage('Texto não encontrado')  else	ShowMesasge('Encontrado no índice :'+IntToStr(iTemp));  FreeAndNil(Texto);end;

Tem como encerrar o for?

É só dar um:
Exit;

Compartilhar este post


Link para o post
Compartilhar em outros sites

FreeAndNil seria para esvaziar a lista de strings?

FreeAndNil é para você tirar o TString da memória.Em vez de você fazer:
Texto.Free;Texto:=nil;
Usa só o:
FreeAndNil(Texto);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok...Se eu já tiver uma lista strings e vier um "Texto := TStringList.Create;" ele vai apagar a lista que já existia, ou não vai acontecer nada?E usando o FreeAndNil, ai ele vai tirar o TString da memória, ou seja, ele vai perder a lista de strings que tinha??Porque a parte que vai ter isso, vai ser executada várias vezes, então não posso perder a lista de strings... Não tem como verificar se já foi feito um TStrings.Create? Porque se não der, ai vou ter que usar Array mesmo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode deixar o código Texto := TStringList.Create; no OnCreate do teu Form, e no OnClose do teu Form, coloque o FreeAndNil(Texto); (Lembre-se de declarar Texto : TStrings; no var do Formulário, para que Texto seja uma variável global)

 

Daí no botão, ficaria o código:

 

procedure TForm1.Button1Click(Sender: TObject);var  iTemp : Integer;begin  Texto.Add('1');  Texto.Add('Mascara');  Texto.Add('3');  ShowMessage('Último: '+Texto.Strings[Texto.Count-1]);  iTemp := Texto.IndexOf('Mascara');  if (iTemp = -1) then	ShowMessage('Texto não encontrado')  else	ShowMessage('Encontrado no índice :'+IntToStr(iTemp));end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.