Pomóżcie, bo się zakałapućkałem i nie wiem o co biega. Poniższy kod miał być uproszczoną wersją ExtractStrings - miał rozdzielać AString na podstawie Separator i zwracać porozdzielane stringi w TStringList. Nie chcę użyć ExtractStrings bo jeśli AString zaczyna się separatorem to potrzebuje mieć zwrócony pusty string, a ExtractStrings go pomija.
No i poniższa funkcja działa bardzo dobrze, w Tmp pojawiają się poprawnie rozdzielone stringi, tylko że linijka
SList.Add(Tmp);
nic nie robi - lista zostaje pusta. Lista jest poprawnie stworzona przez procedurę wywołującą, próbowałem też z TStrings zamiast TStringLists (w ExtractStrings jest TStrings) i za nic nie działa.
Pewnie robię jakiś głupi błąd - niech mi ktos go znajdzie bo program mi potrzebny na wczoraj, plz!
function ParseString(const AString: string;
const Separator:Char;
SList:TStringList):integer;
var
CurPos, PrevPos:integer;
Tmp:String;
begin
Result:=0;
CurPos:=0;
repeat
PrevPos:=Succ(CurPos);
CurPos:=PosEx(Separator,AString,PrevPos);
inc(Result);
if SList<>nil then
begin
if CurPos=0 then
Tmp:=Copy(AString,PrevPos,Length(AString))
else
Tmp:=Copy(AString,PrevPos,CurPos-PrevPos);
SList.Add(Tmp);
end;
until CurPos=0;
end;