AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Kleine Datenbank speichern unter Verwendung von Zeigern
Thema durchsuchen
Ansicht
Themen-Optionen

Kleine Datenbank speichern unter Verwendung von Zeigern

Ein Thema von jawo3 · begonnen am 23. Aug 2010 · letzter Beitrag vom 3. Okt 2010
Antwort Antwort
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#1

AW: Kleine Datenbank speichern unter Verwendung von Zeigern

  Alt 23. Aug 2010, 20:40
Versuch es mal so...
Delphi-Quellcode:
procedure TForm1.ButtonSpeichernClick(Sender: TObject); //Vokabeldatenbank speichern
begin
  Assignfile(f, Datenpfad);
  try
    rewrite(f);
    if Kontrolle then
    begin
      while z <> nil do
      begin
        write(f, z^.Inhalt);
        z:=z^.naechster;
      end;
    end;
    showmessage('Vokabel-Verzeichnis erfolgreich gespeichert'); //Erfolgsmeldung ausgeben
  finally
    closefile(f);
  end;
end;
  Mit Zitat antworten Zitat
jawo3

Registriert seit: 15. Sep 2009
Ort: Niedersachsen
41 Beiträge
 
#2

AW: Kleine Datenbank speichern unter Verwendung von Zeigern

  Alt 23. Aug 2010, 20:47
Danke für die Antwort. Leider wird immer noch nichts in die Datei geschrieben und es kann nichts geladen werden.

Vielleicht hast du ja noch eine Idee...

Danke
jawo3

Jan
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Kleine Datenbank speichern unter Verwendung von Zeigern

  Alt 23. Aug 2010, 21:33
Versuch es mal so...
Delphi-Quellcode:
procedure TForm1.SpeicherFreigeben;
var DelPointer : Zeiger;
begin
  while Wurzel <> nil do begin
    DelPointer:=Wurzel;
    Wurzel:=Wurzel^.naechster;
    dispose(DelPointer);
  end;
  Wurzel:=nil;
end;

procedure TForm1.ButtonSpeichernClick(Sender: TObject); //Vokabeldatenbank speichern
var RunPointer : Zeiger;
begin
  Assignfile(f, Datenpfad);
  try
    rewrite(f);
    RunPointer:=Wurzel;
    while RunPointer <> nil do
    begin
      write(f, RunPointer^.Inhalt);
      RunPointer:=RunPointer^.naechster;
    end;
    showmessage('Vokabel-Verzeichnis erfolgreich gespeichert'); //Erfolgsmeldung ausgeben
  finally
    closefile(f);
  end;
end;

procedure TForm1.ButtonLadenClick(Sender: TObject); //Vokabeldatenbank laden
var NewPointer, OldPointer : Zeiger
begin
  SpeicherFreigeben;
  Assignfile (f, Datenpfad);
  try
    reset(f);
    OldPointer:=nil;
    while not eof(f) do //Auslesen bis Ende der Datei erreicht wird
    begin
      new(NewPointer);
      read(f, NewPointer^.Inhalt);
      NewPointer^.naechster:=nil;
      if OldPointer <> nil then
        OldPointer^.naechster:=NewPointer;
      if Wurzel = nil then
        Wurzel:=NewPointer;
      OldPointer:=NewPointer;
    end;
    showmessage('Datenbank erfolgreich geladen'); //Erfolgsmeldung ausgeben
  finally
    closefile(f);
  end;
end;
  Mit Zitat antworten Zitat
jawo3

Registriert seit: 15. Sep 2009
Ort: Niedersachsen
41 Beiträge
 
#4

AW: Kleine Datenbank speichern unter Verwendung von Zeigern

  Alt 23. Aug 2010, 21:43
Super, vielen Dank!
Es hat funktioniert...

Ich kann mir allerdings immer noch nicht erklären, warum immer dieser "Blechtrommel-Ton" kommt, wenn ich aus den Editfeldern Enter drücke.

Hast du eine Idee woran das liegen kann?
Jan
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Kleine Datenbank speichern unter Verwendung von Zeigern

  Alt 23. Aug 2010, 21:51
Versuch es mal so...
Delphi-Quellcode:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if key = #13 then
    key:=#0;
end;
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#6

AW: Kleine Datenbank speichern unter Verwendung von Zeigern

  Alt 23. Aug 2010, 21:54
Ohne es selber getestet zu haben, könnte Ton für falsche Eingabe sein.

Setze bei return den Key auf #0
Delphi-Quellcode:
if (Key=#13) and (length(EditEintragen.Text)<>0) then
  begin
     Key := #0
(Ups, war zu langsam)

Geändert von Satty67 (23. Aug 2010 um 21:56 Uhr)
  Mit Zitat antworten Zitat
jawo3

Registriert seit: 15. Sep 2009
Ort: Niedersachsen
41 Beiträge
 
#7

AW: Kleine Datenbank speichern unter Verwendung von Zeigern

  Alt 23. Aug 2010, 23:12
Ihr seid wirklich super!

Vielen Dank,
jawo3
Jan
  Mit Zitat antworten Zitat
jawo3

Registriert seit: 15. Sep 2009
Ort: Niedersachsen
41 Beiträge
 
#8

AW: Kleine Datenbank speichern unter Verwendung von Zeigern

  Alt 3. Okt 2010, 12:21
Mir ist heute aufgefallen, dass wenn ich die abgespeicherte Datei aus dem Verzeichnis lösche und dann das Programm starte und versuche die Datenbank zu laden, ich eine Fehlermeldung bekomme (was ja soweit auch logisch ist).

Es wäre schön, wenn ich statt der Fehlermeldung eine Message mit zum Beispiel "Es wurde keine Datenbank gefunden" oder etwas dergleichen angezeigt bekommen würde, also als showmessage.

Nur habe ich keine Ahnung, wie ich das in Code umsetzen kann. Muss man da irgendwie mit solchen Compilerdirektiven arbeiten {$I-} ?

Vielen Dank im Voraus
jawo3
Jan
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:34 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