![]() |
wie soll ich mein projekt speichern?
Hey Leutz,
ich arbeite an einem Projekt, das man sich wie eine Art Fragebogen vorstellen kann. Durch eine Listbox gibt es verschiedene Themen zu denen man navigieren kann und diese Themen haben wiederrum unterschiedliche Tabs, auf denen sich Edit-Felder, Memos oder Stringgrids befinden, in welchen man Eingabe vornimmt. Nun will ich die eingegebenen Daten speichern. Ich frage mich nun, wie ich diese Datei am besten strukturieren soll. An und für sich wäre der Aufbau einer ini-Datei perfekt, da es dort auch Themen (Abschnitte) mit Unterpunkten gibt. Ein weiteres Problem stellen die unterschiedlichen Typen für mich dar: Die Eingaben aus den Edit-Feldern (z.B. Name, Tel, Adresse...) könnte man ja als shortstring speichern. Die Eingaben aus den Memos jedoch nicht. Trotzdem sollte dies alles in einer Datei gespeichert werden. Was würdet ihr mir vorschlagen?? |
Re: wie soll ich mein projekt speichern?
Meine Vorschläge:
a) ini-Datei: Da hast Du halt das Problem mit den Zeilenumbrüchen in Memos. b) Eine Record-Datei: erstell Dir einen Record, in dem Du alle Daten ablegst, dann speichere diesen in eine Datei. c) Embedded Datenbank: hier kannst Du alle Werte in ein eigenes Feld speichern. Wenn Du willst, kannst Du ja für jede Kategorie eine eigene Tabelle erstellen. zu a) das wurde hier schon mehrfach durchgekaut. zu b) wenn Du die Suche bemühst, wirst Du auch genug Infos finden zu c) ist bestimmt übertrieben, aber ne gangbare Möglichkeit. |
Re: wie soll ich mein projekt speichern?
Hi!
Speicher es doch einfach in einer Textdatei... Beispiel @Memo1:Bla bla bla bla bla bal @Edit1:Cooles Programm usw... Memofelder einfach mit Stringreplace('#13#10',' '... umformen Grüsse Frank |
Re: wie soll ich mein projekt speichern?
Ich werfe noch mal XML-Dateien in die Runde.
|
Re: wie soll ich mein projekt speichern?
Zitat:
Datenmenge und optimierte Speicherung interessiert ja heute nicht mehr... Da merke ich wieder wie alt ich bin... lol Grüsse Frank |
Re: wie soll ich mein projekt speichern?
Jedes Speicherformat hat Vor- und Nachteile. Versuch du mal eine Baumstruktur mit mehr als zwei Ebenen in einer Ini-Datei abzubilden.
|
Re: wie soll ich mein projekt speichern?
OK, erstmal danke für die Vorschläge.
Aber, wenn ich eine ini-Datei nutzen will und diese über einen SaveDialog in ein anderes Verzeichnis als das Hauptverzeichnis schieben will, dann kommt bei mir zur Laufzeit eine Fehlermeldung. |
Re: wie soll ich mein projekt speichern?
Zitat:
Oder Doch ? * CVS-Datei, * File of Record XML ist mir pers. zu komplex und Festplattenfüllend. Auserdem kann die jeder sofort lesen zB. per IE. Zitat:
:arrow: Bitte bei neuer Frage einen neuen Thread eröffnen. |
Re: wie soll ich mein projekt speichern?
Hi,
hast du da Schreibrechte? Speicher die Ini im Benutzerpfad. ;) Ansonsten: WElche Fehlermeldung? Zeige doch den Code hier, hier kann niemand hellsehen. :stupid: MfG freak |
Re: wie soll ich mein projekt speichern?
OK, also hier der Quellcode:
Delphi-Quellcode:
Wenn ich keine Berechtigung habe, dann bekomme ich von Windows eine Meldung. Er fragt mich dann, ob ich im Ordner 'Dokumente' speichern will, klicke ich dann auf 'JA' und speichere, dann kommt folgende Fehlermeldung von Delphi:
procedure TFrame1.Speichern;
var F: TiniFile; begin if SaveDialog1.Execute then begin try F:=TIniFile.create(ExtractFilePath(ParamStr(0))+SaveDialog1.Filename); F.WriteString('Kenndaten','Name',EKenndaten[1].text); finally F.Free; end; end; end; Im Projekt test.exe ist eine Exception der Klasse TIniFileException mit der Meldung 'In C:\Users\Sebastian\Desktop\Projekt\C:\Users\Sebast ian\Documents\test.ini kann nicht geschrieben werden' aufgetreten |
Re: wie soll ich mein projekt speichern?
Ist doch klar...
Delphi-Quellcode:
Versuchs mal so..
procedure TFrame1.Speichern;
var F: TiniFile; begin if SaveDialog1.Execute then begin try F:=TIniFile.create(SaveDialog1.Filename); F.WriteString('Kenndaten','Name',EKenndaten[1].text); finally F.Free; end; end; end; Frank |
Re: wie soll ich mein projekt speichern?
OK, danke, es funktioniert.
Also ist dieses "ExtractFilePath(ParamStr(0))" da, um den aktuellen Dateipfad herauszubekommen? Noch eine Frage: Die Memos bereiten mir noch ein wenig Probleme. Ist es nicht möglich, die Memos separat zu speichern und dann alle Dateien (also die ini und die txts) zusammenzupacken? Wie bei einem Zip-Archiv? Nur, dass das Archiv nur von meinem Programm gelesen werden kann? Geht das? |
Re: wie soll ich mein projekt speichern?
Klar geht das. Das wäre dann ein eigenes Dateiformat. Ist aber eigentlich eher etwas für Fortgeschrittene.
|
Re: wie soll ich mein projekt speichern?
So, ich habe jetzt das Tutorial
![]() Ich weiß nicht, ob jemand dieses Tutorial kennt, aber ich habe nun das Problem, dass ich beim Laden die einzelnen Dateien wieder auslesen müsste, um sie in die Memos u.s.w. zu schreiben. Ich weiß nicht wie das geht. Ich hoffe irgendjemand versteht was ich meine |
Re: wie soll ich mein projekt speichern?
Also ich kenne das Tutorial nicht, stand aber auch schon mehrfach vor dem Problem, dass ich auch TMemo-Inhalte mit in die Ini unterbringen musste. Das habe ich dann einfach mittels Codierunge gelöst. Ich weiss nicht, ob Du die JV-Komponenten installiert hast? Jedenfalls kannst Du damit z.B. mit der JVCaesarCipher die Inhalte der Memo.Text in einen kryptisierten String in einer Ini speichern. Dabei gehen Dir nicht einmal die Zeilenumbrüche verloren. Ist zwar mit Spatzen auf Kanonen geschossen, aber es funktioniert und Du hast alles in einer Datei...
Solltest Du die JV´s nicht installiert haben, reicht es auch, wenn Du CodeBase64 nimmst. Ich glaube, dass es hier im Forum irgendwo die Sourcen dazu gab. Musst Du mal suchen. Ist aber sicher so sauberer, als den Kram in verschiedene Dateien zu schreiben, zu packen und auszupacken. => zumindest sehe ich das persönlich so... |
Re: wie soll ich mein projekt speichern?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:28 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