MatheusWC 0 Denunciar post Postado Dezembro 8, 2006 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
Vinicius Callegaro 0 Denunciar post Postado Dezembro 8, 2006 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
Hugo Slepicka 0 Denunciar post Postado Dezembro 8, 2006 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
MatheusWC 0 Denunciar post Postado Dezembro 8, 2006 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
Vinicius Callegaro 0 Denunciar post Postado Dezembro 8, 2006 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
MatheusWC 0 Denunciar post Postado Dezembro 8, 2006 FreeAndNil seria para esvaziar a lista de strings? Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Callegaro 0 Denunciar post Postado Dezembro 8, 2006 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
MatheusWC 0 Denunciar post Postado Dezembro 8, 2006 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
Vinicius Callegaro 0 Denunciar post Postado Dezembro 8, 2006 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
MatheusWC 0 Denunciar post Postado Dezembro 11, 2006 Muito obrigado, consegui resolver na sexta, usando sua dica de TStrings =] Compartilhar este post Link para o post Compartilhar em outros sites
Vinicius Callegaro 0 Denunciar post Postado Dezembro 11, 2006 Estamos aí ;) Compartilhar este post Link para o post Compartilhar em outros sites