![]() |
Delphi-Version: 2010
AssignFile -> simples prinzip aber ich stolper trotzdem...
Hallo zusammen,
mir ist es schon fast peinlich das Problem zu schildern, da a.)es mein erster Post ist und b.) AssignFile eigentlich simpel genug sein sollte. Bei folgendem Abschnitt schmeisst er mir eine Exception sobald das AssignFile aufgerufen wird. FLogFile ist dabei vom Typ TextFile. Der Pfad der in xLogFile steht ist auch vorhanden. Das ganze auf Windows 7. Sehe ich den Wald vor lauter Bäumen nicht? Vielen Dank schoneinmal fürs Lesen und evtl. wenn jemand eine Lösung hat, dann auch für eben jene :)
Delphi-Quellcode:
constructor TFileLogObject.Create;
var xLogFile: String; begin inherited Create; xLogFile := GetCurrentDir + '\' + gcLogFileDir + FormatDateTime('yyyy-mm-dd', now) + gcLogFileExtension; AssignFile(FLogFile, xLogFile); if not FileExists(xLogFile) then Rewrite(FLogFile) else Append(FLogFile); end; |
AW: AssignFile -> simples prinzip aber ich stolper trotzdem...
In AssignFile passiert eigentlich noch garnichts mit der Datei.
Dort wird nur der Dateiname gespeichert (welcher dann bei Append/Rewrite gnutzt wird) und die Dateivariable initialisiert, so daß es dort eigentlich fast nie zu einer Exception kommen kann (außer, wenn mit der Dateivariable etwas nicht stimmt). Wie/Wo ist FLogFile deklariert und wie wird deine Klasse erstellt? Und bist du sicher, daß die Exception bei AssignFile und nicht schon bei
Delphi-Quellcode:
oder im
xLogFile := ...
Delphi-Quellcode:
auftritt?
inherited Create;
|
AW: AssignFile -> simples prinzip aber ich stolper trotzdem...
Das wichtigste hast du vergessen. Was für eine Exception bekommst du?
|
AW: AssignFile -> simples prinzip aber ich stolper trotzdem...
Hossa das ging fix :)
Oh peinlich, wird sofort nachgereicht. Exception ist eine EAccessViolation. Eigentlich ein klarer Indikator aber mir wills einfach nicht aufgehen. Deklaration sieht wie folgt aus:
Delphi-Quellcode:
Der Einzelschritt sagt mir es knallt beim AssignFile. Mich wundert es ja auch das es da knallt. Es wird ja nur der Handle erzeugt. Wenn der Handle ins nichts zeigt beim aufruf Ok aber so? Wie gesagt, ich übersehe bestimmt wieder mal eine popelige Kleinigkeit.
TFileLogObject = Class(TObject)
private FLogFile: TextFile; function FormatTimeStampForLog: String; public constructor Create;overload; destructor Destroy;override; procedure AddLogEntry(aMessage: String); end; Das TFileLogObject wird in einer Get Methode des Globalen Log Objects instantiiert(bei bedarf). |
AW: AssignFile -> simples prinzip aber ich stolper trotzdem...
Wird denn eine Instanz der Klasse erzeugt?
|
AW: AssignFile -> simples prinzip aber ich stolper trotzdem...
Also nocheinmal:
Wie wird dein Objekt von TFileLogObject erzeugt? Ich bin mir fast sicher, daß spätestens dort der Fehler liegt. :glaskugel: [edit] mist, zu spät :lol: |
AW: AssignFile -> simples prinzip aber ich stolper trotzdem...
'Doh!
Ich wollte gerade die Get Methode posten und da renne ich über den Fehler. Der ist schon zu peinlich zum posten! Ich bitte vielmals um Entschuldigung das ich eure Zeit verschwendet habe! Trotzdem vielen vielen Dank für die Mühe! |
AW: AssignFile -> simples prinzip aber ich stolper trotzdem...
Dennoch wäre es gut, wenn man seine Erkenntnis mit anderen Teil,
denn davon lebt ein Forum. Denn was passiert, wenn jemand Anderes auch irgendwann mal das gleiche Problem hat und niemand seine Lösungen veröffentlicht? |
AW: AssignFile -> simples prinzip aber ich stolper trotzdem...
Stimmt auch wieder... nagut, dann poste ich den Anfängerfehler mal ^^
So sah die Get Methode aus:
Delphi-Quellcode:
So muss sie aussehen:
function TLogObject.GetFileLog: TFileLogObject;
begin if FFileLog = NIL then FFileLog.Create; Result := FFileLog; end;
Delphi-Quellcode:
Die Variable zeigte ins leere
function TLogObject.GetFileLog: TFileLogObject;
begin if FFileLog = NIL then FFileLog := TFileLogObject.Create; Result := FFileLog; end; |
AW: AssignFile -> simples prinzip aber ich stolper trotzdem...
Da zeigt nichts ins Leere. Du hast den Konstruktor als gewöhnliche Methode aufgerufen. Dabei wird natürlich keine Instanz erzeugt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 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