AGB  ·  Datenschutz  ·  Impressum  







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

D2009 Exception

Ein Thema von EWeiss · begonnen am 29. Apr 2011 · letzter Beitrag vom 2. Mai 2011
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

D2009 Exception

  Alt 29. Apr 2011, 19:18
Mir ist kein anderen threadnamen eingefallen.

Meine Funktion welche ich hier schonmal gepostet habe verursacht in D2009 beim 2 Aufruf ein
Exception Exception in "blaaa, blaa" aufgetreten.

Delphi-Quellcode:
procedure TSkinConfig.AppendToLinkedList(nReading: Integer; sBuffer: string);
begin

  New(FPBuffer);

  if nReading = 0 then
  Begin
    New(FToPBuffer);
    LineStart := FToPBuffer;
  end;

  FPBuffer^.Nr := nReading;
  FPBuffer^.Str := sBuffer;
  LineStart^.Max := nReading;
  FToPBuffer^.Ptr := FPBuffer;
  FToPBuffer := FPBuffer;

end;

procedure TSkinConfig.FBuffin(FileName: string);
var
  sBuffer: string;

begin

  if not FExist(FileName) then
    Exit;
  try
    try
      Assignfile(ParseFile, FileName);
      reset(ParseFile);

      while not eof(ParseFile) do
      begin
        ReadLN(ParseFile, sBuffer);
        AppendToLinkedList(nReading, sBuffer);
        inc(nReading);
      end;
    except
      raise Exception.Create(SysErrorMessage(GetLastError));
    end;
  finally
    nReading := 0;
    CloseFile(ParseFile);
  end;

end;
und zwar wenn das zweitemal
New(FPBuffer);
aufgerufen wird.
Beim Awendungsfenster tritt das problem nicht auf nur beim
Modal erstellten Window.

In D2006 gibt es keine probleme diesbezüglich.
Mit Exception Exception kann ich nichts anfangen keine Nummer nix wird zurückgegeben.

gruss Emil
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#2

AW: D2009 Exception

  Alt 29. Apr 2011, 19:33
GIbst du den speicher auch irgendwo frei? und mit Dispose? Außerdem würde ich das AssignFile über das try-finally setzen, da im Fehlerfall versucht wird eine Datei, die nicht geoffnet ist zu schließen.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: D2009 Exception

  Alt 29. Apr 2011, 19:43
GIbst du den speicher auch irgendwo frei? und mit Dispose? Außerdem würde ich das AssignFile über das try-finally setzen, da im Fehlerfall versucht wird eine Datei, die nicht geoffnet ist zu schließen.
Im Fehlerfall springt er in except nicht in finally.

Nach dem erstellung des HauptFenster werden die Resourcen wieder freigegeben.
Delphi-Quellcode:
  // Resourcen Freigeben
  FPBuffer := nil;
  Result := True;
sowie das TextFile
CloseFile(ParseFile);
gruss

Geändert von EWeiss (30. Apr 2011 um 17:40 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: D2009 Exception

  Alt 29. Apr 2011, 19:45
Zitat:
Im Fehlerfall springt er in except nicht in finally.
In finally, sollte er auf jeden Fall verzweigen
Markus Kinzler
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: D2009 Exception

  Alt 29. Apr 2011, 20:02
Zitat:
Im Fehlerfall springt er in except nicht in finally.
In finally, sollte er auf jeden Fall verzweigen
Habe es jetzt so umgelegt das er hineinspringt.
Und das AssignFile über try (finally gesetzt)

Ändert aber nichts an meinem problem.

Reicht ein
FPBuffer := nil;
nicht aus? Nachdem das Hauptfenster erstellt wurde?
Warum dann noch ein Dispose?

gruss
  Mit Zitat antworten Zitat
WM_CLOSE

Registriert seit: 12. Mai 2010
Ort: königsbronn
398 Beiträge
 
RAD-Studio 2009 Pro
 
#6

AW: D2009 Exception

  Alt 29. Apr 2011, 20:56
Es gibt leider keinen Garbage Collector in Delphi:
Man muss den Speicher, den man allokiert (mit new) wieder Freigeben(mit Dispose). Das nilen des Pointers reicht da nicht aus, da der Wert dahinter immer noch existiert.

Normalerweise ist sowas "nur" ein Speicherleck und sollte keine Exception werfen, aber wer weiss.
Vielleicht liegt der Fehler wo ganz anders
  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 19:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz