AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Gibts eine schnelle TStringList mit Spalten?
Thema durchsuchen
Ansicht
Themen-Optionen

Gibts eine schnelle TStringList mit Spalten?

Ein Thema von moelski · begonnen am 13. Sep 2010 · letzter Beitrag vom 14. Sep 2010
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.400 Beiträge
 
Delphi 12 Athens
 
#1

AW: Gibts eine schnelle TStringList mit Spalten?

  Alt 13. Sep 2010, 11:16
Es ist bestimmt nicht schwer, die TStringlist-Klasse um die zusätzlichen Funktionen zu erweitern.
Jupp, z.B. auch über die Class-Helper, falls man keine neue Klasse möchte.

Und zum Aufteilen gibt es unzählige Explodefunktionen.
(wobei da auch schnell was kleines selbstgebastelt ist)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

AW: Gibts eine schnelle TStringList mit Spalten?

  Alt 13. Sep 2010, 13:23
Jupp, z.B. auch über die Class-Helper, falls man keine neue Klasse möchte.
...Das wollte ich nicht vorschlagen, weil wir ja nicht die TStringList-Klasse erweitern, sondern eine gänzlich neue Klasse erstellen wollen/sollten/könnten.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Gibts eine schnelle TStringList mit Spalten?

  Alt 13. Sep 2010, 13:25
Wenn ich richtig gelesen habe, soll am besten auch noch ein Index mitgeliefert werden.
Auf welche "Spalte(n)" ?
So sehr ich dagen bin, sich für 1000 Adresssätze gleich eine Embedded-DB zuzulegen, hier wäre dies wohl angebracht.
Und ich denke damit habe ich auch ein großes Problem : NameValueSeparator ...

Denn ich muss den Trenner angeben. Und genau das will ich nicht.

Bsp: Meine Rohdaten sind $GP12,23,34;35,6<CR>
Wenn jetzt der NameValueSeparator auf ; stehen würde ... Dann wird das kaum gut gehen.
Ach Ja ? und warum nicht? wenn wir mal von Unicode absehen, eins von den 250 Zeichen sollte doch wohl als "Fíeldseperator" brauchbar sein.



Grüße
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#4

AW: Gibts eine schnelle TStringList mit Spalten?

  Alt 13. Sep 2010, 14:06
Zitat:
wenn wir mal von Unicode absehen, eins von den 250 Zeichen sollte doch wohl als "Fíeldseperator" brauchbar sein.
Nein. Was da an Rohdaten ankommt kann alles mögliche sein. Da bleibt eben kein Trenner über.

Zitat:
Wenn ich richtig gelesen habe, soll am besten auch noch ein Index mitgeliefert werden.
Auf welche "Spalte(n)" ?
ein Index auf die Reihen würde genügen.

Zitat:
Embedded-DB
Ist aber vermutlich nicht so performant wie eine Lösung mittels einfacher Liste ...
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Gibts eine schnelle TStringList mit Spalten?

  Alt 13. Sep 2010, 15:00
Zitat:
wenn wir mal von Unicode absehen, eins von den 250 Zeichen sollte doch wohl als "Fíeldseperator" brauchbar sein.
Nein. Was da an Rohdaten ankommt kann alles mögliche sein. Da bleibt eben kein Trenner über.
Dann sollten wir uns ganz schnell von Strings verabschieden,und zu einem Binären Format wechseln. (und sei es ein mißbrauchter Shortstring)

Zitat:
Wenn ich richtig gelesen habe, soll am besten auch noch ein Index mitgeliefert werden.
Auf welche "Spalte(n)" ?
ein Index auf die Reihen würde genügen.
Im allgemeinen wird der Index aus den Daten gebildet, nach denen gesucht wird. Z.B. Name, Erfassungsdatum etc.
Die "Reihennr / Satznummer" kann man zwar auch indizieren, aber bei einer Suche nach Inhalten wäre das nicht sehr zielführend.

Zitat:
Embedded-DB
Ist aber vermutlich nicht so performant wie eine Lösung mittels einfacher Liste ...
Um eine DB zu schlagen, muß Du eine DB-Ähnliche Struktur erstellen!
Alleine das Erstellen dieser Struktur, (wie auch immer sie konkret aussieht) fällt im täglichen Betrieb der DB fort. Da hast Du nur noch eine Chance mit handoptimierten Algorithmen und viiieel Assembler. Ob das den Aufwand lohnt?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

AW: Gibts eine schnelle TStringList mit Spalten?

  Alt 13. Sep 2010, 15:29
Ist aber vermutlich nicht so performant wie eine Lösung mittels einfacher Liste ...
Um eine DB zu schlagen, muß Du eine DB-Ähnliche Struktur erstellen!...Da hast Du nur noch eine Chance mit handoptimierten Algorithmen und viiieel Assembler. Ob das den Aufwand lohnt?
Entschuldige, aber das ist Quatsch. So ziemlich jede interne (sortierte) Listenstruktur ist performanter als eine DB. Großartige Verrenkungen muss man noch nicht einmal anstellen: Eine sortierte Liste mit binary Search reicht vollkommen. Performancetechnisch total zerbröseln kann man jede DB mit einem Red-Black-Tree, einer Hashmap oder einer Kombination. Dafür muss man dann aber für jede Informationsabfrage einen neuen Algorithmus schreiben.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Brainstalker
Brainstalker

Registriert seit: 9. Jan 2004
Ort: Berlin
176 Beiträge
 
Delphi 2009 Professional
 
#7

AW: Gibts eine schnelle TStringList mit Spalten?

  Alt 13. Sep 2010, 17:37
Also hier die versprochene Datei. Ist aber glaub ich nicht so besonders brauchbar für dich. Kein Save und Load, ich dachte ich hätte damals mehr implementiert.
Angehängte Dateien
Dateityp: pas AdvStringList.pas (891 Bytes, 32x aufgerufen)
Michael N.
Brainstalker
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
544 Beiträge
 
Delphi 12 Athens
 
#8

AW: Gibts eine schnelle TStringList mit Spalten?

  Alt 13. Sep 2010, 18:49
Hallo,

warum nicht ein ClientDataset benutzen? Kann Speichern, Lesen, man Sortierkriterien festlegen. Bei Daten in einer Tabelle ideal.

Gruß

Ralf
Ralf
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Gibts eine schnelle TStringList mit Spalten?

  Alt 14. Sep 2010, 09:24
Ist aber vermutlich nicht so performant wie eine Lösung mittels einfacher Liste ...
Um eine DB zu schlagen, muß Du eine DB-Ähnliche Struktur erstellen!...Da hast Du nur noch eine Chance mit handoptimierten Algorithmen und viiieel Assembler. Ob das den Aufwand lohnt?
Entschuldige, aber das ist Quatsch. So ziemlich jede interne (sortierte) Listenstruktur ist performanter als eine DB. Großartige Verrenkungen muss man noch nicht einmal anstellen: Eine sortierte Liste mit binary Search reicht vollkommen. Performancetechnisch total zerbröseln kann man jede DB mit einem Red-Black-Tree, einer Hashmap oder einer Kombination. Dafür muss man dann aber für jede Informationsabfrage einen neuen Algorithmus schreiben.
Okay geschenkt, ich war zu "Listenfixiert". Aber was bitte ist ein "Red-Black-Tree"? (der Wikipediaartikel ist mir zu farblastig). Mir sind nur die "Nil"-Blätter aufgefallen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#10

AW: Gibts eine schnelle TStringList mit Spalten?

  Alt 14. Sep 2010, 09:33
In C# bin ich dabei mit ein ObjectTable als Basis für ein nachgebautes StringGrid zu entwerfen. Das ist genauso leicht in Delphi realisierbar.

Es ist im Prinzip eine einfach Klasse mit dem Member
FObjectColumns = array of TObjectList; .
auf Strings spezialisiert könnte man
FStringColumns = array of TStringList nehmen.

Dabei ist jede Spalte eine TStringlist, lässt sich sehr einfach verwalten und um weitere Spalten erweitern. Zugriff erfolgt wie bei StringGrid via
Delphi-Quellcode:
function Cell(row, column : Integer): String;
begin
  sl := FStringColumns[column];
  result := sl[row];
end;
Also zumindest eine Basis-Funktionalität mit Get/SetCell und dynamischer Anpassung der Reihen/Spalten ist recht fix gemacht

PS: Wenn es interessant ist, kann ich heute Abend schnell eine Basisklasse schreiben, die Logik kann ich ja aus dem fertigen Code in C# übernehmen und muss nicht mehr viel dabei denken...
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:25 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