Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - String-List


Smartie - Mo 30.05.05 09:34
Titel: String-List
Hallo,

so wie ich das verstehe, kann ich nicht zwei verschiedene Datensätze nebeneinander in eine Stringlist setzen (Ich habe zwei Vektoren, der Eine beinhaltet die Variablennamen, der andere die Daten selbst).

Ok, dann muß ich das wohl über Zwei Stringlisten speicehrn.

Nur, wie mach ich das, den Inhalt eines Array of Variant in eine String-Liste zu speichern. Das ganze natürlich in eine txt-Datei, die, sollte sie schon existieren, gelöscht bzw. überschrieben werden soll.

Ich stehe grad irgendwie auf dem Schlauch.

Herzlichen Dank und lieben Gruß

Smartie


Lannes - Mo 30.05.05 11:46

Hallo,

wenn ich deine Frage richtig verstehe, müsste die StringList geignet sein.
Hier mal etwas Code zu Names und Values:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TForm1.Button2Click(Sender: TObject);
var MySL : TStringList;
begin
  MySL := TStringList.Create;
  try
    MySL.Add('Peter=12');
    MySL.Add('Hans=21');
    MySL.Add('Peter=16');
    showmessage(MySL[1]);
    showmessage(MySL.Names[1]);//Variablennamen anzeigen
    showmessage(MySL.Values[MySL.Names[1]]);//Wert anzeigen (Delphi 3 u. ???)
    //showmessage(MySL.ValueFromIndex[1]););//ab Delphi 6 ???
    MySL.Values[MySL.Names[1]] := '100';//anderen Wert zuweisen
    showmessage(MySL[1]);
    showmessage(MySL.Values['Hans']);//Wert von Hans anzeigen
    Memo1.Lines.AddStrings(MySL);
    MySL.SaveToFile('c:\Temp\daten.txt');
  finally
    MySL.Free;
  end;
end;

Um ein Array of Variant zu speichern hilft Dir varTyp :

Delphi-Quelltext
1:
2:
if VarType(MyArrOfVar[i]) = varString then
  //...

Die Typen z.B. varString, varInteger ... findest Du in der Delphi-Hilfe unter "VarType".


Heiko - Mo 30.05.05 12:03

Aber mit array zu arbeiten ist besser als mit StringLists.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
type TDaten=record
   Variablenname: String;
   Ziel: String;
  end;

var Daten: array of TDaten;
...


Smartie - Mo 30.05.05 12:56

user profile iconHeiko hat folgendes geschrieben:
Aber mit array zu arbeiten ist besser als mit StringLists.


Ja, das Array exestiert bereits, genau genommen zwei, eines für die Daten, das andere für die Variablennamen.

Ich arbeite auch damit udn kan ndamit auch gut leben. aber mein Abteilungsleiter, der an dem Projekt mitarbeitet, möchte unbedingt die Daten in einer Stringlist.

Danke und lieben Gruß

Smartie


deccer - Mo 30.05.05 13:28


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
var
  xSL: TStringlist;
  aDaten: array of TDaten;
  iIndex: integer;

begin
  xSL := TStringlist.Create;
  for iIndex := 0 to High(aDaten) do
    xSL.Add(aDaten[iIndex].VariablenName + '=' + aDaten[iIndex].Wert);
  xSL.SaveToFile('daten.txt');
  FreeAndNil(xSL);
end;

// soweit das füllen :)

function GetVarValue(xSL: TStringlist; const VariableName: string): string;
var
  iIndex: integer;

begin
  Result := '';
  if not Assigned(xSL) then
    Exit;
  for iIndex := 0 to xSL.Count - 1 do
    if xSL.Values[VariableName] <> '' then begin
      Result := xSL.Values[VariableName];
      Exit;
    end;
end;


alzaimar - Mo 30.05.05 13:50

@Heiko: Wieso sind Arrays besser? Ich bevorzuge, soweit es geht, die von Delphi bereitgestellten Klassen. Die TStringlist kann sortieren, sich speichern, laden usw. Alles, was ich mit einem Array erst mühsam selbst programmieren müsste.