Designfrage zu einer Tabelle
-
- Beiträge: 294
- Registriert: So 4. Mai 2014, 21:32
- OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10
- CPU-Target: 64bit
- Wohnort: Oranienburg
Designfrage zu einer Tabelle
Hi,
ich bin mir unsicher, wie ich folgende Sache programmtechnisch umsetzen soll:
Ich habe eine Tabelle, diese Tabelle hat 365 Einträge, nämlich genau für jeden Tag des Jahres eine (Schaltjahr ist unwichtig).
Für jeden Tag gibt es drei Spalten mit Daten.
Auf diese Tabelle will ich in Lazarus schnell und performant zugreifen. Und natürlich muss sie für späteren Gebrauch gespeichert werden.
Mein erster Gedanke war, sie einfach als csv abzulegen und bei Programmstart einzulesen.
Dann dachte ich: ne kleine Datenbank wäre vielleicht performanter. Sofort Zweifel: ist eine DB für die paar Datensätze nicht etwas overdressed?
Nächster Gedanke: Pack die Daten in einen Record, den Record in ein Array (Anzahl der Sätze ist ja vorgegeben) und speicher das ganze als banale Textdatei (da steht nix geheimes drin). Vorteil: liegt auf dem Stack, keine Speicherverwaltung erforderlich. Zweifel: wie groß ist der Stack. Überlaste ich ihn damit? Ist eigenlich nur ein kleines Progrämmchen ohne viele Funktionen und tausend lokalen Variablen. Aber trotzdem...???
So, jetzt habe ich mich selbst total verunsichert. Liebe Fortgeschrittene: wie würdet ihr so etwas anlegen?
ich bin mir unsicher, wie ich folgende Sache programmtechnisch umsetzen soll:
Ich habe eine Tabelle, diese Tabelle hat 365 Einträge, nämlich genau für jeden Tag des Jahres eine (Schaltjahr ist unwichtig).
Für jeden Tag gibt es drei Spalten mit Daten.
Auf diese Tabelle will ich in Lazarus schnell und performant zugreifen. Und natürlich muss sie für späteren Gebrauch gespeichert werden.
Mein erster Gedanke war, sie einfach als csv abzulegen und bei Programmstart einzulesen.
Dann dachte ich: ne kleine Datenbank wäre vielleicht performanter. Sofort Zweifel: ist eine DB für die paar Datensätze nicht etwas overdressed?
Nächster Gedanke: Pack die Daten in einen Record, den Record in ein Array (Anzahl der Sätze ist ja vorgegeben) und speicher das ganze als banale Textdatei (da steht nix geheimes drin). Vorteil: liegt auf dem Stack, keine Speicherverwaltung erforderlich. Zweifel: wie groß ist der Stack. Überlaste ich ihn damit? Ist eigenlich nur ein kleines Progrämmchen ohne viele Funktionen und tausend lokalen Variablen. Aber trotzdem...???
So, jetzt habe ich mich selbst total verunsichert. Liebe Fortgeschrittene: wie würdet ihr so etwas anlegen?
Ich mag Pascal...
-
- Beiträge: 106
- Registriert: Mi 3. Feb 2016, 09:39
- OS, Lazarus, FPC: Linux(Arch Linux(+ARM)/Minibian) (L 1.6.0 FPC 3.0.0)
- CPU-Target: 32/64Bit,ARM(RPi)
- Wohnort: nahe Grimma
Re: Designfrage zu einer Tabelle
Hi Marsmännchen,
es gibt ja auch leichtgewichtige Datenbanken. Oder du machst du mit einer INI Datei. Da müsste man aber schauen wie performant das dann ist.
Zu der Frage mit dem Stack hab ich leider keine Antwort. Aber das kannst du einfach testen. Also dein Record erstellen, dann ein Array von Record und dann die Anzahl der Elemente erhöhen.
Wären das dann nicht 365 Elemente im Array?
es gibt ja auch leichtgewichtige Datenbanken. Oder du machst du mit einer INI Datei. Da müsste man aber schauen wie performant das dann ist.
Code: Alles auswählen
[XX.XX.XXXX]
Spalte1=
Spalte2=
Spalte3=
Wären das dann nicht 365 Elemente im Array?
Mfg Requion
Das beste an Standards ist, dass es so viele davon gibt.
Das beste an Standards ist, dass es so viele davon gibt.
- af0815
- Lazarusforum e. V.
- Beiträge: 6780
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Designfrage zu einer Tabelle
Meine Ansätz wären
A) http://wiki.freepascal.org/How_to_write ... azarus/FPC (ev. mit xml oder csv als storage)
B) sqlite
Andreas
A) http://wiki.freepascal.org/How_to_write ... azarus/FPC (ev. mit xml oder csv als storage)
B) sqlite
Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 294
- Registriert: So 4. Mai 2014, 21:32
- OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10
- CPU-Target: 64bit
- Wohnort: Oranienburg
Re: Designfrage zu einer Tabelle
Richtig, und die Daten bestehen aus einem Datum, einem kurzen Text und einem Boolean. Also keine Bilder oder Videos.Requion hat geschrieben: Wären das dann nicht 365 Elemente im Array?
TMemDataset und TBufDataset habe ich mir mal kurz angesehen. Interessant. Aber da muss ich noch tiefer einsteigen. Ist eine Weile her, dass ich mit Datenbanken rumgemacht habe. Aber das wäre ja schon alleine gut für die Allgemeinbildung, sich damit zu befassen

Wenn ich mit Records arbeite: kann ich irgendwie auslesen, wieviel vom Stack durch so eine Geschichte verbraucht wird? Oder ich probier es einfach mal aus und sehe, was passiert

Ich mag Pascal...
- af0815
- Lazarusforum e. V.
- Beiträge: 6780
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Designfrage zu einer Tabelle
Schalte aber die Überprüfungen in den Projekteinstellungen->Debuggen ein.Marsmännchen hat geschrieben:Wenn ich mit Records arbeite: kann ich irgendwie auslesen, wieviel vom Stack durch so eine Geschichte verbraucht wird? Oder ich probier es einfach mal aus und sehe, was passiert
BTW: Free Pascal Programmers' manual
Code: Alles auswählen
8.2.1 Intel x86 version
The stack is cleared with the ret I386 instruction, meaning that the size of all pushed parameters is limited to 64K.
8.2.1.1 DOS
Under the DOS targets, the default stack is set to 256Kb. This value cannot be modified for the GO32V1 target. But this can be modified with the GO32V2 target using a special DJGPP utility stubedit. It is to note that the stack size may be changed with some compiler switches, this stack size, if greater then the default stack size will be used instead, otherwise the default stack size is used.
8.2.1.2 Linux
Under LINUX, stack size is only limited by the available memory of the system.
8.2.1.3 Windows
Under WINDOWS, stack size is only limited by the available memory of the system.
8.2.1.4 OS/2
Under OS/2, stack size is determined by one of the runtime environment variables set for EMX. Therefore, the stack size is user defined.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 294
- Registriert: So 4. Mai 2014, 21:32
- OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10
- CPU-Target: 64bit
- Wohnort: Oranienburg
Re: Designfrage zu einer Tabelle
Okay, danke, dann sollte es unter Win10 eigentlich mit meinen 365 Records keine Probleme geben. Ich probier das aus und gebe dann Rückmeldung. Momentan kämpfe ich noch damit, meine Records aus einer csv-Datei zu bestücken.
Ich mag Pascal...
-
- Lazarusforum e. V.
- Beiträge: 240
- Registriert: Di 5. Feb 2008, 15:32
- OS, Lazarus, FPC: Linux Mint - Laz 2.2.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
Re: Designfrage zu einer Tabelle
Ich habe noch im Hinterkopf, dass man unter Turbo Pascal Records sehr einfach in 'typisierten Dateien' abspeichern konnte.
Google findet z.B. das:
https://www.delphi-treff.de/tipps-trick ... e-dateien/
Google findet z.B. das:
https://www.delphi-treff.de/tipps-trick ... e-dateien/