Thema: Delphi Zeiger TList

Einzelnen Beitrag anzeigen

inriz

Registriert seit: 18. Okt 2005
15 Beiträge
 
#1

Zeiger TList

  Alt 18. Okt 2005, 13:57
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
  Mit Zitat antworten Zitat