Jump to content

Archived

This topic is now archived and is closed to further replies.

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

Share this post


Link to post
Share on other 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;

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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;

Share this post


Link to post
Share on other 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);

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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;

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.