Encaixar uma string em uma Lista - Delphi
21/12/2018
0
Bom dia, estou com uma certa dificuldade de resolver um problema, eu preciso encontrar um espaço vago na lista, para encaixar a string.
Exemplo: 'SAVE003'
Lista = ['SAVE001','SAVE002','SAVE004']. Teria que ficar assim Lista = ['SAVE001','SAVE002','SAVE003','SAVE004']. Se alguém puder me ajudar eu agradeço!
Exemplo: 'SAVE003'
Lista = ['SAVE001','SAVE002','SAVE004']. Teria que ficar assim Lista = ['SAVE001','SAVE002','SAVE003','SAVE004']. Se alguém puder me ajudar eu agradeço!
Lucas Domiciano
Curtir tópico
+ 0
Responder
Post mais votado
21/12/2018
E ae Lucas blz cara,
Então você tem muitas formas de fazer isso, a questão é se você conhece a origem do novo valor, caso conheça se for posicional pode usar um objeto do tipo array "StringList cai bem nessa situação", caso não saiba a posição e não queira percorrer os dados pode usar a função "pos" que te retorna a posição de uma string dentro do elemento, fica fácil com "pos" caso o valor não se repita como parece ser o caso no seu exemplo...
Como no seu caso já está no formato de array segue um exemplo com StringList que montei aqui para te ajudar :
Espero que te ajude... Abraço.
Então você tem muitas formas de fazer isso, a questão é se você conhece a origem do novo valor, caso conheça se for posicional pode usar um objeto do tipo array "StringList cai bem nessa situação", caso não saiba a posição e não queira percorrer os dados pode usar a função "pos" que te retorna a posição de uma string dentro do elemento, fica fácil com "pos" caso o valor não se repita como parece ser o caso no seu exemplo...
Como no seu caso já está no formato de array segue um exemplo com StringList que montei aqui para te ajudar :
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, cxLookAndFeelPainters, StdCtrls, cxButtons; type TForm1 = class(TForm) cxButton1: TcxButton; procedure cxButton1Click(Sender: TObject); function completaEsquerda(str:string;x:char;len:integer):string; private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} // botão para executar metodo procedure TForm1.cxButton1Click(Sender: TObject); var lValores : tstringlist; aValores: array [0..3] of string; i,nMin,nMax:Smallint; cBase:String; begin // exemplo +- parecido com a lista descrita aValores[0]:= 'SAVE001'; aValores[1]:= 'SAVE002'; aValores[2]:= 'SAVE004'; cBase:= 'SAVE';// variavel com o nome base // pega a primeira posição para saber o menor SAVE nMin := StrToInt(copy(aValores[0],5,3));// transforma a string em numero nMax:= Length(aValores)-1; nMax := StrToInt(copy(aValores[nMax-1],5,3));// transforma a string em numero lValores := TStringList.Create; // loop do tamanho maximo e minimo for i:=nMin to nMax do begin lValores.Add(cBase+completaEsquerda(IntToStr(i),'0',3)); ShowMessage(completaEsquerda(IntToStr(i),'0',3)); end; // mostra os valores ajustados ShowMessage(lValores.Text); lValores.Free; end; // fução para preencher valores a esquerda function TForm1.completaEsquerda(str:string;x:char;len:integer):string; begin // Completa a string com x:char ate ter len tamanho pela esquerda str := trim(str); while Length(str) < len do str := x + str; result := str; end; end.
Espero que te ajude... Abraço.
Jucélio Silva
Responder
Mais Posts
21/12/2018
Jucélio Silva
só remove essa parte " nMax:= Length(aValores)-1; " era para ver se a posição tava certa do ultimo registro XD...
Responder
Clique aqui para fazer login e interagir na Comunidade :)