Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi wie soll ich mein projekt speichern? (https://www.delphipraxis.net/99259-wie-soll-ich-mein-projekt-speichern.html)

overlord99 9. Sep 2007 16:13


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

RavenIV 10. Sep 2007 07:55

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.

Mavarik 10. Sep 2007 07:59

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

Luckie 10. Sep 2007 08:29

Re: wie soll ich mein projekt speichern?
 
Ich werfe noch mal XML-Dateien in die Runde.

Mavarik 10. Sep 2007 08:38

Re: wie soll ich mein projekt speichern?
 
Zitat:

Zitat von Luckie
Ich werfe noch mal XML-Dateien in die Runde.

Stimmt...

Datenmenge und optimierte Speicherung interessiert ja heute nicht mehr...

Da merke ich wieder wie alt ich bin... lol

Grüsse Frank

Luckie 10. Sep 2007 08:46

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.

overlord99 10. Sep 2007 09:35

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.

turboPASCAL 10. Sep 2007 09:37

Re: wie soll ich mein projekt speichern?
 
Zitat:

Zitat von Mavarik
Zitat:

Zitat von Luckie
Ich werfe noch mal XML-Dateien in die Runde.

Stimmt...

Datenmenge und optimierte Speicherung interessiert ja heute nicht mehr...

Da merke ich wieder wie alt ich bin... lol

Grüsse Frank

:mrgreen: Ich sag jetzt nix....

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:

Zitat von overlord99
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.

Stimmt das Verzeichnis ?


:arrow: Bitte bei neuer Frage einen neuen Thread eröffnen.

freak4fun 10. Sep 2007 09:40

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

overlord99 10. Sep 2007 10:03

Re: wie soll ich mein projekt speichern?
 
OK, also hier der Quellcode:

Delphi-Quellcode:
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;
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:

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

Mavarik 10. Sep 2007 10:28

Re: wie soll ich mein projekt speichern?
 
Ist doch klar...


Delphi-Quellcode:
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;
Versuchs mal so..

Frank

overlord99 10. Sep 2007 10:34

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?

Luckie 10. Sep 2007 11:01

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.

overlord99 10. Sep 2007 18:26

Re: wie soll ich mein projekt speichern?
 
So, ich habe jetzt das Tutorial hier ausprobiert und habe es geschafft, meine Textdateien und die ini-Datei in ein Archiv zu packen.
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

torud 11. Sep 2007 09:19

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

Ralf Kaiser 11. Sep 2007 11:57

Re: wie soll ich mein projekt speichern?
 
Zitat:

Zitat von turboPASCAL
XML ist mir pers. zu komplex und Festplattenfüllend. Auserdem kann die jeder sofort lesen zB. per IE.

Dann wird es halt gepackt. So macht es doch das neue Office auch. Intern sind es XML-Dateien die dann noch gezipt und "DOCX" genannt werden. So kann man dann auch verschiedene zusammengehörende Dateien speichern (und XML lässt ich gut packen und ist dann auch nicht mehr so festplattenfüllend :-)


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