Speichern von Daten

Anfängerfragen zum Programmieren mit PureBasic.
dietmar
Beiträge: 97
Registriert: 19.09.2005 19:11
Wohnort: Zuhause

Speichern von Daten

Beitrag von dietmar »

Guten Abend

ich such die einfachste Möglcihkeit viele gleiche Daten zu speichern, in Fenster darzustellen, Daten hinzuzufügen und auch wieder zu löschen. Der hintergrund ich soll was proggen für eine Kindergarten. Dazu soll für jedes kind die dazu gehörenden Daten(Adresse, Alter, Gruppe usw.) verarbeitet werden können.

Die verarbeitung bekomm ich hin aber wenn es darum geht das in eine Tabelle oder Datenbank zu speichern beginnn die Probleme. An diesem punkt find ich die Hilfe nicht wirklich aufschlussreich, die Foren-Suche hilft mir auch nicht und die MDB_lib funktioniert nicht weil eine andere Lib fehlt.

Die Frage ist wie kann ich jetzt im Prinzip eine LinkList am einfachsten speichern?
Wir leben alle unter dem gleichen Sternenhimmel, aber wir haben nicht alle den gleichen Horizont.
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag von Scarabol »

Hallo,

ich nem mal einfach an die Linked List hat eine Struktur dann könntest du sie wie folgt speichern:

Code: Alles auswählen

createfile(1, "kids.txt")
foreach test()
writestring(1, test()\name+"%"+test()\alter+"%"+test()\lieblingsfarbe ;use
next
closefile(1)
Ist nicht optimiert reicht aber für ein erstes Verständnis denke ich

Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Beitrag von uweb »

Ich finde die Datenbank-Möglichkeiten bei PureBasic rießig. Es ist zwar keine eingebaut aber die Wege zu bestehenden Lösungen sind schon breitgetrampelt (SQLite, Cheetah, MySQL, ODBC, Access, ... die beiden erstgenannten scheinen mir am einfachsten) und hier oder im englischen Forum reichlich beschrieben. Benutze einfach die Namen in der Klammer als Suchbegriff.

Alternativ :
Die aller einfachste Methode wäre wohl das Thema Datenbanken bei der Aufgabe auszuklammern und
alles beim Start und Ende des Programms einzeln mittels File-Befehle (ReadString, WriteString , ...)
zu speichern. Das hätte aber den Nachteil, daß bei einem Absturz während dem Arbeiten die neuen Daten weg sind.
Bei einer festen Satzlänge könntest Du mit wenig mehr Aufwand per FileSeek in der Datei navigieren und satz- oder feldweise speichern. Bei der Größe eines Kindergarten wäre es wahrscheinlich aber auch noch vertretbar immer (also auch während dem Arbeiten) die ganze Datei auf einmal zu schreiben. Wenn Du die bestehende Datei vorher mit RenameFile umbenennst hast Du immer eine Kopie der alten.
dietmar
Beiträge: 97
Registriert: 19.09.2005 19:11
Wohnort: Zuhause

Beitrag von dietmar »

Find ich im Prinzip gar nicht schlecht, nur das wenn ein Kind dann den Kindergarten verlässt sollte es eigentlich aus der Datei gelöscht werden, dann müsste man jedesmal die Datei neu erzeugen, und die Leerzeilen löschen. Auch wenn die Daten sich ändern seh ich dan das Problem das für jede Änderung im Prinzip die Datei neu erzeugt werden müsste, seh ich das richtig?

Noch ne Frage interessehalber. Wenn "%" durch ";" erstezt wird und die Datei mit der Endung *.csv erstellt wird, ist das dann schon ne CSV-Datei, also eine Datei die in Exel importiert werden können?
Wir leben alle unter dem gleichen Sternenhimmel, aber wir haben nicht alle den gleichen Horizont.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> MDB_lib funktioniert nicht weil eine andere Lib fehlt.
Da fehlt keine Lib, sondern Du hast die falsche Version, unter ASM4.0
http://www.reelmediaproductions.com/pb
findeste die passende für PB4, bzw. direktlink:
http://www.reelmedia.org/pureproject/ar ... DB_Lib.zip
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
D@nte
Beiträge: 324
Registriert: 24.04.2007 15:33
Wohnort: Berlin

Beitrag von D@nte »

Ne Datei mit der Endung .csv kann immer mit EXCEL geöffnet werden (genauso wie ich ne .exe in .txt umbenennen kann und mit Notepad öffnen kann) und ja wenn die Datei .csv heißt und zwischen den Daten eines Datensatzes der Operator ; verwendet wird se mit ESCEL korrekt dargestellt..

Nur wo wäre das Problem die Datei jedesmal neu zu erstellen?! Die Ladezeit kann's nicht sein da ich bezweifle das es in dem Kindergarten mehr als 55k Kinder gibt, für meine mobile Rechnungsdruckerei lad ich über 55k Datensätze in < 20 sek
Benutzeravatar
uweb
Beiträge: 461
Registriert: 13.07.2005 08:39

Beitrag von uweb »

Ich bin heute etwas langsam. Da ich den Text nun aber schon einmal habe sende ich ihn auch :

http://de.wikipedia.org/wiki/CSV-Datei sagt CSV steht für Character Separated Values, Comma Separated Values oder Colon Separated Values. Die genaue Bedeutung ist also nicht fix. Deshalb bietet Excel ja auch so viele Optionen beim Laden und speichern an. Auf jeden Fall ist es eine Textdatei bei der Sätze durch Zeilenumbruch und Felder durch ein Zeichen getrennt sind. Manchmal werden Strings noch in andere Zeichen (i.d.R. Hochkomma) eingepackt.

Die Datei ständig neu zu erzeugen war ja im wesentliche mein Alternativ-Vorschlag (der letzte Satz - sollte zumindest einmal pro Sitzung erfolgen). Ich sehe da kein Problem außer der Geschwindigkeit. Die kannst Du aber wahrscheinlich wegen der geringen Datenmenge vernachlässigen. Das Arbeiten an sich geht dafür aus dem Arbeitsspeicher schneller.
dietmar
Beiträge: 97
Registriert: 19.09.2005 19:11
Wohnort: Zuhause

Beitrag von dietmar »

:D schon mal über ne Datenbank nachgedacht.

Ne Spaß beiseite, es sind im Moment so ca 109 Datensätze. Es ist ja auch nicht so das es täglich Änderungen gibt, aber es erscheint mir jetzt mal so auf den ersten Blick als recht seltsam jedesmal die Datei zu überschreiben. Aber man könnte doch auch die Änderungen erst mal nur in die Liste übernehmen und beim beenden speichern zusätlich vielleicht noch ein speichern Button und eine Sicherungsdatei alle 2 Stunden?


@ts-soft stimmt. soory bin heute nicht ganz auf der Rolle. Sah da so ein 4.0 rumstehen und klick wars wohl die Falsche.
Wir leben alle unter dem gleichen Sternenhimmel, aber wir haben nicht alle den gleichen Horizont.
Benutzeravatar
Scarabol
Beiträge: 1427
Registriert: 30.11.2005 21:00

Beitrag von Scarabol »

Hallo

ich glaub nicht das hier einer meinte, dass die Datei alle 5 sek überschrieben werden soll. Denke mal du solltest es so machen wie in deinem letzten Post beschrieben das hört sich schon vernünftiger an. Wenn es dir allerdings zu unsicher ist kann man ja das Delay für das Backup runterschrauben.

Gruß
Scarabol
Abgeschlossen Projekte:
Schreibmaschine, Bildschirmlupe, Wings3DtoOgreMeshConverter
Watch: PureArea

PB-V: 4
WinXP
Benutzeravatar
Xaby
Beiträge: 2144
Registriert: 12.11.2005 11:29
Wohnort: Berlin + Zehdenick
Kontaktdaten:

@dietmar

Beitrag von Xaby »

http://www.purebasic.fr/german/viewtopic.php?t=12879

Auch hier bei den Anfänger, auf der Hauptseite.

Es ist ganz einfach. Du lädst eh alle Datensätze zum Anzeigen.
Wenn man nun einen Datensatz entfernt, speicherst du wieder alle.

Das machst du so oder so.

Oder du legst für jedes Kind eine Datei an. Das geht auch.
Und realisierst die Sache dann über

ExamineDirectory()

Angenommen dein Datensatz heißt: "Egal.csv"
Dann hast du folgende Struktur:
Name;Vorname;Geburtstag;
Dings;Paul;01.01.2000;
Wenn du nun das Verzeichnis nach allen Dateien mit Endnung CSV
durchsuchst, kannst du eine Liste machen.
Oder ein Array.

Das Array sortierst du nur zum Anzeigen.

Du solltest allerdings zu jedem Datensatz auch den Dateinamen im Array verwalten, damit du weißt, in welche Datei du was eintragen musst.

Vorteil:

Du kannst sogar gleichzeitig von mehreren Rechnern auf deine Kinderverwaltung zugreifen.

Du kannst auch die Kinder einfach als Datei im Ordner löschen.

Und wenn du alles in einem Ordner hast, geht es auch mit der Übersichtlichkeit.

Gruß, Folker :allright:
Kinder an die Macht http://scratch.mit.edu/
Antworten