Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zweispaltige Stringlist (https://www.delphipraxis.net/56811-zweispaltige-stringlist.html)

ozz 11. Nov 2005 17:43


Zweispaltige Stringlist
 
Hallo zusammen,
ich habe eine grundsätzliche Frage:
Gibt es eigentlich sowas wie zweispaltige Tstringlisten (zwei Spalten, n-Einträge). Gleichzeitig wäre quasi der Funktionsumfang von TStringlist cool.
TSTringlist.Item[i].spalte1
TSTringlist.Item[i].spalte2
TSTringlist.add(i)
TSTringlist.delete(i)

Prinzipiell könnte ich es wie in meinem letzten Posting machen (s.u.). Gibt es noch eine einfacher (komfortabler) :mrgreen: Lösung.

Danke!


Delphi-Quellcode:
type TClDiS = class (Tcomponent)
private
...
FDocumentlist:TObjectList;
function Get(Index: Integer): TDocument;
procedure Put(Index: Integer; const Value: TDocument);
Published
...
function add(item: TWebbrowser):integer;
function Count: Integer;
public
property Document[Index: Integer]: TDocument read Get write Put;
...

function TCldis.Count: Integer;
begin
    result:=FDocumentList.Count;
end;

function TCldis.Get(Index: Integer): TDocument;
begin
    result:=TDocument(FDocumentList[Index]);
end;

procedure TCldis.Put(Index: Integer; const Value: TDocument);
begin
    FDocumentList[Index]:=Value;
end;

glkgereon 11. Nov 2005 18:01

Re: Zweispaltige Stringlist
 
versuchs doch mal mit explode...

ich hatte dasselbe Problem auch mal, und hab einfach irgendeine Zeichenkombination dazwischen getan "#?#!#?#" oder so :)

dann immer mit explode rausgeholt.

wär auch einfach zu implementieren.

Delphi-Quellcode:
type
  TMySL = class(TStringList)
  public
    procedure Add2(I1, I2: String);
    procedure Set2(Index: Integer; I1, I2: String);
    procedure Get2(Index: Integer; var I1, I2: String);
    function IndexOf2(I1, I2: String):Integer;
  end;

const
  cSepVal = '#?#!#?#';

implementation

//explode...

procedure TMySL.Add2(I1,I2: String);
begin
  Add(I1+cSepVal+I2);
end;

procedure TMySL.Set2(Index: Integer; I1, I2: String);
begin
  if (Index<Count) and (Index>-1) then
    Strings[i]:=I1+cSepVal+I2;
end;

procedure TMySL.Get2(Index: Integer; var I1, I2: String);
var T: TStringDynArray;
begin
  if (Index<Count) and (Index>-1) then
    begin
    T:=Explode(cSepVal,Strings[i]);
    I1:=T[0];
    I2:=T[1];
    end;
end;

function TMySL.IndexOf2(I1, I2: String):Integer;
begin
  Result:=IndexOf(I1+cSepVal+I2);
end;

Palando 11. Nov 2005 18:44

Re: Zweispaltige Stringlist
 
Wenn ich meinen Vorschreiber richtig verstanden ahbe, brauchst du dazu allerdings noch eine Explode-Funktion. Hier eine, die ich aus nem Projekt von mir rauskopiert ahbe, sie ist allerdings nicht (!) von mir und ich weiß auch nicht mehr, wo se her war:


(Siehe nachschreibenden Vorschreiber)

glkgereon 11. Nov 2005 18:46

Re: Zweispaltige Stringlist
 
such hier in der CodeLib nach ExplodeExplode und du wirst finden ;)

Palando 11. Nov 2005 18:47

Re: Zweispaltige Stringlist
 
War tatsächlich von hier :D

Dann kann ich den Code oben ja wieder rausnehmen. Dachte der wär von woanders gewesen...


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz