| Autor |
Beitrag |
Dude566
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Sa 19.06.10 14:13
Hallo,
ich bin momentan dabei ein kleines Adressbuchprogramm zu entwickeln, nur zu Übungszwecken.
Als Vorlage, wie es irgendwann einmal eingesetzt werden könnte, habe ich mir www.chip.de/download...h-2009_21744584.html als Beispiel genommen.
Allerdings ohne Datenbanken, ich möchte die Daten in eine typisierte Datei mit eigenem Datentyp (record) speichern.
In der oben angegebenen Software übernimmt er schon beim Eintragen von Daten alles in die rechte Tabelle und speichert sie wohl auch, wie kann ich das am besten realisieren?
Ich hatte zunächst versucht bei jedem Exit Ereigniss eines Edits meine Speicherprozedur aufzurufen, doch da müsste dann ja noch eine Prüfung rein ob ich einen Datensatz hinzufügen möchte oder einen vorhanden bearbeite und dann die Änderungen Speichern möchte. In der Beispielsoftware sind aber nur 3 Buttons für die Kontrolle der Datensätze und es klappt dort prima.
Also wie soll ich mein Programm aufbauen, habt ihr irgendwelche Ideen oder Entwürfe?
Mit freundlichen Grüßen,
Dude566
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Sa 19.06.10 14:49
Fang doch vom Anfang an! Also du hast noch keine Adressen im Buch!
Editcomponenten, je nach dem wie Du es aufschlüsselst.
Name, Vorname, Komplette Adresse(oder einzelne Edits für Ort Strasse Hausnr. usw.) Telf, oder was du noch willst.
Im changeereignis ne Variable setzen das Du was gemacht hast. Dadurch wird der SpeichernButton z.B. aktiviert.
Befor Du jetzt irgendwas laden tust oder beendest, kommt der Hinweiss das Daten geändert wurden! Speichern ja/nein.
Beim Laden von Daten das changeereignis deaktivieren, danach wieder aktivieren, schon geht alles wieder von vorn los! Währe meine Idee!
Die Feinheiten, wie gross Dein Adressbuch ist, wieviele Einträge es hat, oder ob ein Eintrag schon vorhanden ist ergeben sich von selbst
Das automatische Speichern hat aber auch Nachteile!
Überprüfen ob die Daten schon vorhanden sind z.B.
Nachfragen ob überschrieben werden soll usw.
Gruss Alf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
Für diesen Beitrag haben gedankt: Dude566
|
|
Dude566 
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Sa 19.06.10 15:23
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
ALF
      
Beiträge: 1085
Erhaltene Danke: 53
WinXP, Win7, Win10
Delphi 7 Enterprise, XE
|
Verfasst: Sa 19.06.10 16:21
Na ja, bischen doppeltgemoppelt ist es schon! Du kannst die Daten vom Edit ja gleich mit übernehmen im Record. Entweder im exit(was nicht immer sicher ist) oder ebenfalls im onchange vom Edit. Also keine extrprocedure dafür!
Alles andere, testen obschon vorhanden vor dem Speichern ist klar. Dabei natürlich auch auf die Auflösung denken, was schon vorhanden ist Telefon, Name, z.B.
Vorname nur in verbindung des Nachnamen und umgekehrt usw.
Wird ne komplizierte Aufgabe, die ganzen vergleiche usw ohne DB.
Gruss Alf
_________________ Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
|
|
Gerd Kayser
      
Beiträge: 632
Erhaltene Danke: 121
Win 7 32-bit
Delphi 2006/XE
|
Verfasst: Sa 19.06.10 18:56
Für diesen Beitrag haben gedankt: Dude566
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 19.06.10 19:04
Große Nachteile einer solchen typisierten Datei sind, dass einerseits viel Speicherplatz verschwendet wird und andererseits dennoch nicht unbedingt genug Platz zur Verfügung steht.
Das heißt jetzt nicht, dass ich unbedingt eine Datenbank favorisiere. Ich selbst habe da auch durchaus eigene optimierte Lösungen eingesetzt.
Sinnvoll ist aber auf jeden Fall eine dynamische Datenstruktur um nicht an feste Größen für die Daten gebunden zu sein.
Zudem kannst du so dann auch sehr einfach zum Beispiel Bilder oder ähnliches mit in die Datei speichern.
Für diesen Beitrag haben gedankt: Dude566
|
|
Dude566 
      
Beiträge: 1592
Erhaltene Danke: 79
W8, W7 (Chrome, FF, IE)
Delphi XE2 Pro, Eclipse Juno, VS2012
|
Verfasst: Sa 19.06.10 19:46
jaenicke hat folgendes geschrieben : |
Sinnvoll ist aber auf jeden Fall eine dynamische Datenstruktur um nicht an feste Größen für die Daten gebunden zu sein.
Zudem kannst du so dann auch sehr einfach zum Beispiel Bilder oder ähnliches mit in die Datei speichern. |
Du sprichst jetzt aber nicht von einer typisierten Datei oder?
Ich verstehe nicht ganz was du meinst, ich habe doch eine dynamische Datenstruktur, mit jedem neuen Datensatz wird halt mehr Speicherplatz gebraucht.
_________________ Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen.
|
|
jaenicke
      
Beiträge: 19339
Erhaltene Danke: 1752
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Sa 19.06.10 20:28
Ich meine, dass du pro Datensatz 1 KiB benutzt obwohl da vielleicht nur 50 Byte benutzt werden. Das ist bei den heutigen Festplatten zwar kein Problem, aber dennoch unnötig.
Zusätzlich kannst du aber eben keine Zusatzdaten wie Fotos oder so mit einbinden. Denn die Dateistruktur ist ja so vollkommen fest.
Sicher, für deinen Zweck mag es ausreichen, aber typisierte Dateien verwende ich selbst eher ungern. Auch weil man da keinen Dateiheader benutzen kann (jedenfalls nicht direkt). Über den Dateiheader läuft bei mir zum Beispiel die versionsabhängige Behandlung der Datei um auch ältere Dateien mit neueren Versionen meiner Programme noch verwenden zu können.
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Sa 19.06.10 20:33
jaenicke hat folgendes geschrieben : | | Auch weil man da keinen Dateiheader benutzen kann (jedenfalls nicht direkt). |
Ich weiß zwar nicht, was du mit direkt oder indirekt meinst, aber wo ist das Problem bei einer typisierten Dtei einen Record voranzustellen, der die Version und weitere Informationen enthält?
Ich weiß nicht, ob das schon vorgeschlagen wurde, aber es würde sich eventuell lohnen sich mal XML-Dateien anzugucken.
|
|
|