CVS-Texteinträge sortieren

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag von remi_meier »

In eine Struktur einlesen und mit SortStructuredArray() oder SortStructuredList()
nach einem Feld sortieren.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Wie ist das mit dem Speicher?
> Habe ca. 150 Datensätze a ca. 100 Zeichen pro Zeile!

kannst du selber ausrechnen: 150x100 = 15000 byte = knapp 15KB
bei unicode halt das doppelte...
(ok, es kommen noch die pointer dazu, also +4byte pro feld)

...soviel hauptspeicher solltest du locker erübrigen können... ;)
Zuletzt geändert von Kaeru Gaman am 13.10.2006 17:51, insgesamt 1-mal geändert.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag von dysti »

Wie würde das Codemäßig evtl. aussehen?
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag von dysti »

Ich denke auch das ich soviel Speicher dafür übrig habe. Ist ja nur eine kleine Kassenwartverwaltung.
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

eine möglichkeit:

structure erstellen, soviele strings, wie dein datensatz felder hat.
array erstellen, eindimensional, so viele zeilen wie die datei datensätze

einlesen:
große schleife
per readstring einen kompletten datensatz einlesen,
per kleine schleife und stringfield aufteilen und in die einzelnen felder in der structure in der aktuellen array-zeile schreiben.
große schleife ende

nach gewünschtem feld sortieren per sortstructuredarray

speichern:
große schleife
kleine schleife, struct-felder zusammenfügen mit kommata dazwischen.
ggf. mit CRLF$ abschließen
per writestring speichern
große schleife ende

und natürlich dateien öffnen/schließen, is kla.. ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag von dysti »

Danke Kaeru Gaman,

ich denke das bekomme ich hin. Zumindest hat man jetzt den berühmten roten Faden.

Danke an alle für die schnelle Hilfe.

Grüße
Dysti
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Danke Kaeru Gaman,

aber gerne doch. ;)

schön, dass du mit einer solchen anleitung klarkommst.
ich denke, da hast du mehr davon, als wenn jemand kompletten code gepostet hätte.

wenn noch fragen auftauchen, kannste ja wieder posten.

HF
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Little John

Beitrag von Little John »

Kaeru Gaman hat geschrieben:structure erstellen, soviele strings, wie dein datensatz felder hat
Nur so aus allgemeinem Interesse:
Muss die Anzahl der Felder schon beim Schreiben des Programms bekannt sein, oder lässt sich die Structure dynamisch zur Lauzzeit anpassen?

Gruß, Little John
Benutzeravatar
mk-soft
Beiträge: 3855
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Oder ODBC

Code: Alles auswählen

InitDatabase()

datei.s = GetCurrentDirectory() + "Telefon.csv"

If OpenDatabase(0, "Text-Dateien", "", "")

  sql.s = "SELECT * FROM " + Datei + " ORDER BY NAMEN"
  If DatabaseQuery(0, sql)
    While NextDatabaseRow(0)
      temp.s = GetDatabaseString(0, 0) + ";"
      temp.s + GetDatabaseString(0, 1) + ";"
      temp.s + GetDatabaseString(0, 2) + ";"
      temp.s + GetDatabaseString(0, 3) + ";"
      Debug temp
    Wend
  Else
    Debug DatabaseError()
  EndIf
EndIf
FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
dysti
Beiträge: 656
Registriert: 10.02.2006 18:34
Wohnort: Schlicktown

Beitrag von dysti »

Ich habe tatsächlich noch eine Frage bzw. neue Idee. Man soll ja nicht doppelte Datenhaltung machen. Wenn ich zwei CSV-Datenbanken habe und in der zweiten für den Namen eine ID benutze, müssen bei einer Anzeige beide syncronisiert werden. Hat einer eine Idee wie man sowas macht?
PB5 / Spiderbasic / WB14 / Win7 / Win8.1 / Win10 / Debian 9
Antworten