Fórum Encaixar uma string em uma Lista - Delphi #599346
21/12/2018
0
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
+ 0Post mais votado
21/12/2018
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
Gostei + 2
Mais Posts
21/12/2018
Jucélio Silva
Gostei + 0
17/01/2019
Lucas Domiciano
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)