Delphi-Quellcode:
function TForm1.GetTokenList(sCommand, sSeparator : string; tlToken : TListPtr) : Integer;
var
sTmp : string;
sCurrentToken : string;
iPos : Integer;
iResult : Integer; // anzahl der token
iRest : Integer;
pTmp : Pointer;
begin
iResult := 0;
sTmp := sCommand;
iPos := Pos(sSeparator, sTmp);
if iPos > 0 then
begin
repeat
iRest := Length(sTmp) - iPos;
sCurrentToken := LeftStr(sTmp, iPos - 1); // hier können laufzeitfehler entstehen ...
pTmp := Pointer(sCurrentToken);
sTmp := RightStr(sTmp, iRest);
iPos := Pos(sSeparator, sTmp);
tlToken.Add(pTmp);
Inc(iResult);
until not (iPos > 0);
if Length(sTmp) > 0 then
begin
pTmp := Pointer(RightStr(sTmp, Length(sTmp)));
tlToken.Add(pTmp);
Inc(iResult);
end;
end;
Result := iResult;
end;
{ @@@@ Borland kram}
procedure TForm1.BtnGetTokenClick(Sender: TObject);
var
sStr : string;
sIndex : Integer;
lToken : TList;
iLoop : Integer;
sToken : string;
pTmp : Pointer;
begin
sStr := EdtText.Text;
lToken := TList.Create;
if Length(sStr) > 0 then
begin
sIndex := GetTokenList(sStr, ':', @lToken);
if sIndex > 0 then
begin
for iLoop := 0 to lToken.Count - 1 do
begin
pTmp := lToken.Items[iLoop];
sToken := PChar(pTmp);
MemResult.Lines.Add(sToken);
end;
end;
end;
end;
hi!
der string der gettokenlist übergeben wird beinhaltet folgenden wert : 12345:foo:bar
die funktion soll nun diesen wert durch den separator : splitter und alle token in eine liste schreiben
diese liste wird als zeiger übergeben ...
das programm lässt sich ausführen, jedoch bekomme ich nicht die werte im memo angezeigt die ich wollte
sondern
nur: online
online
onl
könnt ihr mir helfen? welche grundlegenden dinge habe ich bei den zeigeroperationen gemacht?
gruß inriz