AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehler: Out of Memory

Ein Thema von C64-Flo · begonnen am 10. Jan 2005 · letzter Beitrag vom 11. Jan 2005
Antwort Antwort
RedDust

Registriert seit: 26. Okt 2004
Ort: Könnern
96 Beiträge
 
Delphi 2005 Personal
 
#1

Wo ein Wille ist, ist auch ein weg

  Alt 10. Jan 2005, 18:31
Also es gibt eine Methode die ich oft anwende sind übergreifende Units, 1. behält man die übersicht und 2. findet man schneller Fehler. Hier mal, wie ich das Prob. lösen würde.

1. Unit

Delphi-Quellcode:
unit variablen;

interface

uses controls;

type TKontakt = record
        Name : string[255];
        Vorname : string[255];
        Geburtstag : TDate;
     end;

     TZeiger = ^TInhalt;

     TInhalt = record
       Inhalt : TKontakt;
       Next : TZeiger;
       Prev : TZeiger;
     end;

var z_akt, z_akt2, z_kopf, z_ende : TZeiger;
    v_dat : FILE OF TKontakt;
    VCard : TKontakt;

implementation

end.
2. Unit

Delphi-Quellcode:
unit prozeduren;

interface

uses variablen;

procedure p_laden;
procedure p_uebernehmen(kontakt : TKontakt);
procedure p_speichern;

implementation

uses haupt;

procedure p_laden;
begin
  AssignFile(v_dat, ExtractFilePath(Application.ExeName) + 'daten.lst');
  Reset(v_dat);
      WHILE NOT EOF(v_dat) DO
        BEGIN
          IF z_akt = NIL THEN
            BEGIN
              New(z_akt);
              Read(v_dat,z_akt^.Inhalt);
              z_kopf := z_akt;
              z_ende := z_akt;
              z_akt^.Prev := NIL;
              z_akt^.Next := NIL;
            END
          ELSE
            BEGIN
              new(z_akt2);
              z_akt^.Next := z_akt2;
              z_akt^.Next^.Prev := z_akt;
              z_akt := z_akt2;
              Read(v_dat,z_akt^.Inhalt);
              z_ende := z_akt;
              z_akt^.Next := NIL;
            END;
        END;
  z_akt := z_kopf;
end;

procedure p_uebernehmen;
begin
  IF ueberschreiben THEN
    BEGIN
      z_akt^.Inhalt := kontakt;
    END
  ELSE
  IF z_akt = NIL THEN
    BEGIN
      New(z_akt);
      z_akt^.Inhalt := kontakt;
      z_kopf := z_akt;
      z_ende := z_akt;
      z_akt^.Prev := NIL;
      z_akt^.Next := NIL;
    END
  ELSE
    BEGIN
      new(z_akt2);
      z_akt^.Next := z_akt2;
      z_akt^.Next^.Prev := z_akt;
      z_akt := z_akt2;
      z_akt^.Inhalt := kontakt;
      z_ende := z_akt;
      z_akt^.Next := NIL;
    END;
end;

procedure p_speichern;
begin
  IF z_akt <> NIL THEN
    BEGIN
      z_akt := z_kopf;
      AssignFile(v_dat, ExtractFilePath(Application.ExeName) + 'dateiname.endung');
      Rewrite(v_dat);
      WHILE z_akt^.Next <> NIL DO
        BEGIN
          Write(v_dat,z_akt^.Inhalt);
          z_akt := z_akt^.Next;
        END;
      Write(v_dat,z_akt^.Inhalt);
      CloseFile(v_dat);
    END;
end;


end.
Is aber nur 'n Vorschlag. Sollten noch Fragen auftreten, immer stellen.
Mario Franze
  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:56 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