Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi String, TStrings, TStringlist Typenkonflikte (https://www.delphipraxis.net/29747-string-tstrings-tstringlist-typenkonflikte.html)

motu 14. Sep 2004 09:35


String, TStrings, TStringlist Typenkonflikte
 
Ich habe folgenden Code:

Delphi-Quellcode:
    Text1 := TStringList.Create;
    Text2 := TStringList.Create;
...
      SpaltenCBX.Items.Delimiter := ';';
      text1.addstrings(SpaltenCBX.Items.DelimitedText + ';' + #13);
...
      text1.addstrings(Text1 + 'Mittelwert;');
      text2 := 'Standardabw.;';
...
          z:= foo;
          Text1.addstrings(Text1 + floattostr(z) + ';');
          y:= foo_anders;
          Text2.addstrings( Text2 + floattostr(y) + ';');
        end;
          Text1.addstrings(Text1 + #13 + Text2 + #13);
          Text2.addstrings('')
      end;
Nun bekomm' ich in überall 'nen Typenkonflikt angezeigt. Gibt es kein StrToStrings o.ä.?

shmia 14. Sep 2004 10:04

Re: String, TStrings, TStringlist Typenkonflikte
 
Vergiss deine Denkweise, dass die einzelnen Strings getrennt mit Strichpunkt hinzugefügt werden müssen !
Einzelne Elemente werden mit der Methode .Add hinzugefügt.
Bestehenden TStrings-Objekte werden mit .AddStrings angehängt.

Delphi-Quellcode:
    Text1 := TStringList.Create;
    Text2 := TStringList.Create;
...
      text1.addstrings(SpaltenCBX.Items);
...
      text1.Add('Mittelwert');
      text2.Add('Standardabw.');
...
          z:= foo;
          Text1.Add(floattostr(z));
          y:= foo_anders;
          Text2.Add(floattostr(y));

motu 14. Sep 2004 10:11

Re: String, TStrings, TStringlist Typenkonflikte
 
Zitat:

Zitat von shmia
Vergiss deine Denkweise, dass die einzelnen Strings getrennt mit Strichpunkt hinzugefügt werden müssen !

Wie sieht das mit Zeilenumbrüchena aus?
Außerdem benutze ich:

Delphi-Quellcode:
z:= foo;
Text1.addstrings(Text1 + floattostr(z) + ';');
y:= foo_anders;
Text2.addstrings( Text2 + floattostr(y) + ';');

Text1.addstrings(Text1 + #13 + Text2 + #13);
Text2.addstrings('')
in einer Schleife. Z wird berechnet, z wird zur Berechnung von y gebraucht. Aber die Ergebnisse von z und y sollen in verschiedene Zeilen. Ich bhabe mehrere Ergebnisse von z/y pro Zeile
Das ganze sieht so komisch aus, weil ich bisher das ganz in eine Label.Caption ausgegeben habe und das Ganze jetzt direkt in eine Datei schreiben will

Sanchez 14. Sep 2004 10:15

Re: String, TStrings, TStringlist Typenkonflikte
 
Hallo,

Hier verwendest du doch auch AddStrings um einen String anzuhängen.
Für Strings nimmst du Add und um TStrings anzuhängen nimmst du AddStrings.

Bei Zeilenumbrüchen
Delphi-Quellcode:
  Text1.Add(Text1 + #10#13 + Text2);
erzeugst du 2 Zeilen in der Stringliste. Eine mit Text1 und eine mit Text2.

grüße, daniel

shmia 14. Sep 2004 10:23

Re: String, TStrings, TStringlist Typenkonflikte
 
Zitat:

Zitat von motu
Wie sieht das mit Zeilenumbrüchena aus?

Delphi-Quellcode:
Stringobj.Add(''); // leere Zeile anhängen
Zitat:

Zitat von motu
Außerdem benutze ich:

Delphi-Quellcode:
z:= foo;
Text1.addstrings(Text1 + floattostr(z) + ';');
y:= foo_anders;
Text2.addstrings( Text2 + floattostr(y) + ';');

Text1.addstrings(Text1 + #13 + Text2 + #13);
Text2.addstrings('')
in einer Schleife. Z wird berechnet, z wird zur Berechnung von y gebraucht. Aber die Ergebnisse von z und y sollen in verschiedene Zeilen. Ich bhabe mehrere Ergebnisse von z/y pro Zeile
Das ganze sieht so komisch aus, weil ich bisher das ganz in eine Label.Caption ausgegeben habe und das Ganze jetzt direkt in eine Datei schreiben will

Anscheinend möchtest du bestehende Elemente eines TStrings-Objekts verändern:
Delphi-Quellcode:
var
   s : string; // Hilfsvariable
...
s := StringObj[StringObj.Count-1]; // Wert der letzten Zeile auslesen
s := s + ....; // Zeile verlängern
StringObj[StringObj.Count-1] := s; // verlängerte Zeile zurückschreiben
Aus Performancegründen enpfiehlt es sich, eine Zeile komplett in einer Zwischenvariable aufzubauen
und dann mit .Add anzuhängen.

motu 14. Sep 2004 11:15

Re: String, TStrings, TStringlist Typenkonflikte
 
Zitat:

Zitat von shmia
Aus Performancegründen enpfiehlt es sich, eine Zeile komplett in einer Zwischenvariable aufzubauen und dann mit .Add anzuhängen.

Performance ist erstmal egal. Ich möchte jetzt meinen TString in einer Datei speichern. Ich weiß nicht, ob etwas drin ist. wenn ich mir nen Breakpoint setze und in meinen TString schaue ist da nichts. Also folgendes hab ich :
Delphi-Quellcode:
    AssignFile(T, SaveDialog1.FileName);  { Datei ausgewählt }
    Filemode:=fmOpenWrite;
    ReWrite(T);
    Reset(T);
    CloseFile(T);
Da muß aber noch irgendwo und -wie mein TString rein.

scp 14. Sep 2004 12:19

Re: String, TStrings, TStringlist Typenkonflikte
 
Die gesamte Liste kannst du doch mit
Delphi-Quellcode:
Text1.SaveToFile(SaveDialog1.FileName);
in eine Datei speichern.

motu 14. Sep 2004 12:23

Re: String, TStrings, TStringlist Typenkonflikte
 
Zitat:

Zitat von scp
Die gesamte Liste kannst du doch mit
Delphi-Quellcode:
Text1.SaveToFile(SaveDialog1.FileName);
in eine Datei speichern.

Danke, dat funzt. :-D

Doch jetzt sehe ich, das alle Werte in jeweils einer eigenen Zeile Stehen. Kann ich denn einem TString was anhängen, ohne das es in eine neue Zeile kommt?

scp 14. Sep 2004 12:27

Re: String, TStrings, TStringlist Typenkonflikte
 
Da musste dir nur nochmal shmias Code angucken, das ist genau das was du meinst.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:32 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-2025 by Thomas Breitkreuz