AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Spaltenweise auf TStringList zugreifen

Ein Thema von aaaaaaaaaa_10 · begonnen am 27. Jul 2009 · letzter Beitrag vom 30. Jul 2009
Antwort Antwort
Seite 1 von 8  1 23     Letzte »    
aaaaaaaaaa_10
(Gast)

n/a Beiträge
 
#1

Spaltenweise auf TStringList zugreifen

  Alt 27. Jul 2009, 08:06
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.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Spaltenweise auf TStringList zugreifen

  Alt 27. Jul 2009, 08:10
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
aaaaaaaaaa_10
(Gast)

n/a Beiträge
 
#3

Re: Spaltenweise auf TStringList zugreifen

  Alt 27. Jul 2009, 08:21
Also ich muss immer wieder (alle par Sekunden) etwas berechnen. Wie lese ich die Daten denn in eine "richtige" Tabelle?
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Spaltenweise auf TStringList zugreifen

  Alt 27. Jul 2009, 08:24
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
aaaaaaaaaa_10
(Gast)

n/a Beiträge
 
#5

Re: Spaltenweise auf TStringList zugreifen

  Alt 27. Jul 2009, 08:28
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Spaltenweise auf TStringList zugreifen

  Alt 27. Jul 2009, 08:30
Doch in der 2. Stringliste werden die Werte anhand des Trenners zu Spalten
Markus Kinzler
  Mit Zitat antworten Zitat
aaaaaaaaaa_10
(Gast)

n/a Beiträge
 
#7

Re: Spaltenweise auf TStringList zugreifen

  Alt 27. Jul 2009, 08:31
Ach so,ich probiere es gleich mal aus.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.648 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Spaltenweise auf TStringList zugreifen

  Alt 27. Jul 2009, 08:31
Zitat von aaaaaaaaaa_10:
Wieso "suboptimal"?
Weil die Daten erst geparst werden müssen um damit zu arbeiten.

Zitat von aaaaaaaaaa_10:
Damit habe ich doch nur die Zeile mit Trennzeichen, aber doch noch keine Spalten
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.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Spaltenweise auf TStringList zugreifen

  Alt 27. Jul 2009, 08:34
Zur Sicherheit würde ich noch MyList.StrictDelimiter := True; setzen um sicherzustellen, dass nicht weitere Trenner verwendet werden ( Leerzeichen usw.)
Markus Kinzler
  Mit Zitat antworten Zitat
aaaaaaaaaa_10
(Gast)

n/a Beiträge
 
#10

Re: Spaltenweise auf TStringList zugreifen

  Alt 27. Jul 2009, 08:44
Ich lade also die vorhandene StringList in eine neue?
 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
ZwSpeicher.SaveToFile(TestDatei); Aber irgendwas scheint da nicht zu stimmen. Ich habe nur die erste Zeile als Spalte.Und mehr kommt da nicht
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 8  1 23     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:23 Uhr.
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