Designfrage zu einer Tabelle

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Marsmännchen
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

Beitrag von Marsmännchen »

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 mag Pascal...

Requion
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

Beitrag von Requion »

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.

Code: Alles auswählen

[XX.XX.XXXX]
Spalte1=
Spalte2=
Spalte3=


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?
Mfg Requion

Das beste an Standards ist, dass es so viele davon gibt.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
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

Beitrag von af0815 »

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
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Marsmännchen
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

Beitrag von Marsmännchen »

Requion hat geschrieben:Wären das dann nicht 365 Elemente im Array?

Richtig, und die Daten bestehen aus einem Datum, einem kurzen Text und einem Boolean. Also keine Bilder oder Videos.

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 :mrgreen: .

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 8)
Ich mag Pascal...

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6208
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

Beitrag von af0815 »

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 8)

Schalte aber die Überprüfungen in den Projekteinstellungen->Debuggen ein.

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).

Marsmännchen
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

Beitrag von Marsmännchen »

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...

Eb
Lazarusforum e. V.
Beiträge: 238
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

Beitrag von Eb »

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/

Antworten