Delphi-PRAXiS
Seite 1 von 8  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Spaltenweise auf TStringList zugreifen (https://www.delphipraxis.net/137708-spaltenweise-auf-tstringlist-zugreifen.html)

aaaaaaaaaa_10 27. Jul 2009 07:06


Spaltenweise auf TStringList zugreifen
 
Hallo,

ich habe ein StringList, die wie eine Tabelle aufgebaut ist (oben der Header und dann die Werte pro Spalte).
Nun möchte ich pro Spalte eine Berechnung durchführen. Wie gehe ich da am besten spaltenweise vor? (Die einzelnen Werte in einer Zeile sind durch #9 getrennt.

jaenicke 27. Jul 2009 07:10

Re: Spaltenweise auf TStringList zugreifen
 
Je nachdem wie oft du da etwas berechnen willst. Wenn es nur einmal oder so passiert, dann kannst du die einzelnen Spalten einer Zeile mit Hilfe einer weiteren TStringList auslesen und schreiben. Dafür gibt es Delimiter und DelimitedText zum Beispiel.

Wenn das immer wieder passieren soll, solltest du die Daten einmal auslesen in eine richtige Tabelle, z.B. ein zweidimensionales Array, dort damit arbeiten und dann wieder ggf. in die TStringList legen.

aaaaaaaaaa_10 27. Jul 2009 07:21

Re: Spaltenweise auf TStringList zugreifen
 
Also ich muss immer wieder (alle par Sekunden) etwas berechnen. Wie lese ich die Daten denn in eine "richtige" Tabelle?

jaenicke 27. Jul 2009 07:24

Re: Spaltenweise auf TStringList zugreifen
 
Woher kommen denn die Daten? Legst du die selbst in dieses (suboptimale) Format oder hast du darauf keinen Einfluss?

Ja, wie du es machst, wie gesagt, nimm für jede Zeile eine TStringList, weise Delimiter und DelimitedText zu, dann hast du die Spalten. Diese packst du jetzt in ein zweidimensionales Array. Dessen Größe musst du natürlich vorher mit SetLength anpassen.
Das ist sicher nicht die schnellste Herangehensweise, aber solange die Datenmengen nicht zu groß sind akzeptabel.

aaaaaaaaaa_10 27. Jul 2009 07:28

Re: Spaltenweise auf TStringList zugreifen
 
Darauf habe ich keinen Einfluss. Wieso "suboptimal"?

Zitat:

Ja, wie du es machst, wie gesagt, nimm für jede Zeile eine TStringList, weise Delimiter und DelimitedText zu, dann hast du die Spalten
Damit habe ich doch nur die Zeile mit Trennzeichen, aber doch noch keine Spalten :?: :gruebel:

mkinzler 27. Jul 2009 07:30

Re: Spaltenweise auf TStringList zugreifen
 
Doch in der 2. Stringliste werden die Werte anhand des Trenners zu Spalten

aaaaaaaaaa_10 27. Jul 2009 07:31

Re: Spaltenweise auf TStringList zugreifen
 
Ach so,ich probiere es gleich mal aus.

jaenicke 27. Jul 2009 07:31

Re: Spaltenweise auf TStringList zugreifen
 
Zitat:

Zitat von aaaaaaaaaa_10
Wieso "suboptimal"?

Weil die Daten erst geparst werden müssen um damit zu arbeiten.

Zitat:

Zitat von aaaaaaaaaa_10
Damit habe ich doch nur die Zeile mit Trennzeichen, aber doch noch keine Spalten :?: :gruebel:

Beispiel:
Delphi-Quellcode:
MyList.Delimiter := #9;
MyList.DelimitedText = 'a'#9'b'#9'c';
Jetzt hast du in der TStringList drin:
Code:
a
b
c
Du kannst also direkt auf die Spalteninhalte zugreifen.

mkinzler 27. Jul 2009 07:34

Re: Spaltenweise auf TStringList zugreifen
 
Zur Sicherheit würde ich noch
Delphi-Quellcode:
MyList.StrictDelimiter := True;
setzen um sicherzustellen, dass nicht weitere Trenner verwendet werden ( Leerzeichen usw.)

aaaaaaaaaa_10 27. Jul 2009 07:44

Re: Spaltenweise auf TStringList zugreifen
 
Ich lade also die vorhandene StringList in eine neue?
Delphi-Quellcode:
 ZwischenSpeicher.LoadFromFile(VorhandeneDatei);
Nun will ich ab Zeile 0 bis count-1 der vorhandenen Datei die Zeilen als spalten in die ZwischenSpeicher StringList speichern.

Delphi-Quellcode:
ZwSpeicher.Delimiter := #9;
         for i := 1 to Sek.Count-1 do
          ZwSpeicher.DelimitedText := Sek.Strings[i];
Nun noch in die neue Datei laden
Delphi-Quellcode:
ZwSpeicher.SaveToFile(TestDatei);
Aber irgendwas scheint da nicht zu stimmen. Ich habe nur die erste Zeile als Spalte.Und mehr kommt da nicht


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:38 Uhr.
Seite 1 von 8  1 23     Letzte »    

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