#3 oxidián
chybí ti tam v tom foru : před =
a nevím proč to máš jako funkci z tohohle není třeba nic vracet. spíš bych si tu funkci z univerzálnil
// definice
procedure ReplaceInListBoxItems(var list: TListBox;co, cim :string);overload;
procedure ReplaceInListBoxItems(var list: TListBox;co, cim :string;flags : TReplaceFlags); overload;
procedure ReplaceInListBoxItems(var list: TListBox;cocim : array of string); overload; // co čím je pole stringů střídavě co,čím,co,čím, měl by být sudá počet, aby byly spárované
procedure ReplaceInListBoxItems(var list: TListBox;cocim : array of string;flags : TReplaceFlags); overload;
// příklady volání
ReplaceInListBoxItems(listbox1,'nice','Nice'); //volá proceduru se stringy
ReplaceInListBoxItems(listbox1,['nice','Nice']); //´volá proc se str array
// implementace
procedure ReplaceInListBoxItems(var list: TListBox;co, cim :string);
begin
ReplaceInListBoxItems(list,[co, cim],[rfReplaceAll]);
end;
procedure ReplaceInListBoxItems(var list: TListBox;co, cim :string;flags : TReplaceFlags)
begin
ReplaceInListBoxItems(list,[co, cim],flags);
end;
procedure ReplaceInListBoxItems(var list: TListBox;cocim : array of string);
begin
ReplaceInListBoxItems(list,cocim,[rfReplaceAll]);
end;
procedure ReplaceInListBoxItems(var list: TListBox;cocim : array of string;flags : TReplaceFlags);
var
I,J,zamen : integer;
begin
zamen := length(cocim);
// kontroly, Flags by měl být ověřen při překladu
if zamen = 0 then exit; // pole zamen je prázdné
if (zamen mod 2) >0 then exit; // stringy co-čím nejsou spárované
if (list=nil) or (list.Items.count=0) then exit; //není vytvořen objekt Listbox, nebo neobsahuje položky
//smyčka Items
for I := 0 to list.Count-1 do
begin
J := 0; // J = čítač záměn
while J<zamen do
begin
list.Items[I] := stringreplace(list.Items[I], cocim[J], cocim[J+1], [rfReplaceAll]);
inc(J,2);
end;
end;
end;
Na tyhle věci mám vlastní knihovnu funkcí, od D2010 fungují tzn helpery pak by bylo volání jednodušší listbox1.replaceInItems.
podle toho jak to funguje, lze mít náhrady i serializované takže třeba druhý pár náhrad může být na nový stav z 1. náhrady + něco navíc např ['No.=','číslo=','číslo=10;','číslo=0010;'] nejdříve se proběhne první náhrada za No. se dá číslo a v druhé náhradě se pak číslo=10 nahradí číslo=0010.