AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language AssignFile -> simples prinzip aber ich stolper trotzdem...
Thema durchsuchen
Ansicht
Themen-Optionen

AssignFile -> simples prinzip aber ich stolper trotzdem...

Ein Thema von DerTobi · begonnen am 30. Apr 2011 · letzter Beitrag vom 1. Mai 2011
Antwort Antwort
Seite 1 von 2  1 2      
DerTobi

Registriert seit: 30. Apr 2011
6 Beiträge
 
Delphi 2010 Professional
 
#1

AssignFile -> simples prinzip aber ich stolper trotzdem...

  Alt 30. Apr 2011, 11:38
Delphi-Version: 2010
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;
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#2

AW: AssignFile -> simples prinzip aber ich stolper trotzdem...

  Alt 30. Apr 2011, 11:45
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 xLogFile := ... oder im inherited Create; auftritt?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

AW: AssignFile -> simples prinzip aber ich stolper trotzdem...

  Alt 30. Apr 2011, 11:45
Das wichtigste hast du vergessen. Was für eine Exception bekommst du?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
DerTobi

Registriert seit: 30. Apr 2011
6 Beiträge
 
Delphi 2010 Professional
 
#4

AW: AssignFile -> simples prinzip aber ich stolper trotzdem...

  Alt 30. Apr 2011, 12:00
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:
  TFileLogObject = Class(TObject)
  private
    FLogFile: TextFile;
    function FormatTimeStampForLog: String;
  public
    constructor Create;overload;
    destructor Destroy;override;

    procedure AddLogEntry(aMessage: String);
  end;
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.

Das TFileLogObject wird in einer Get Methode des Globalen Log Objects instantiiert(bei bedarf).
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

AW: AssignFile -> simples prinzip aber ich stolper trotzdem...

  Alt 30. Apr 2011, 12:03
Wird denn eine Instanz der Klasse erzeugt?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#6

AW: AssignFile -> simples prinzip aber ich stolper trotzdem...

  Alt 30. Apr 2011, 12:03
Also nocheinmal:
Wie wird dein Objekt von TFileLogObject erzeugt?

Ich bin mir fast sicher, daß spätestens dort der Fehler liegt.

[edit]
mist, zu spät
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
DerTobi

Registriert seit: 30. Apr 2011
6 Beiträge
 
Delphi 2010 Professional
 
#7

AW: AssignFile -> simples prinzip aber ich stolper trotzdem...

  Alt 30. Apr 2011, 12:08
'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!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#8

AW: AssignFile -> simples prinzip aber ich stolper trotzdem...

  Alt 30. Apr 2011, 12:29
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?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
DerTobi

Registriert seit: 30. Apr 2011
6 Beiträge
 
Delphi 2010 Professional
 
#9

AW: AssignFile -> simples prinzip aber ich stolper trotzdem...

  Alt 30. Apr 2011, 13:19
Stimmt auch wieder... nagut, dann poste ich den Anfängerfehler mal ^^

So sah die Get Methode aus:

Delphi-Quellcode:
function TLogObject.GetFileLog: TFileLogObject;
begin
  if FFileLog = NIL then
    FFileLog.Create;

  Result := FFileLog;
end;
So muss sie aussehen:

Delphi-Quellcode:
function TLogObject.GetFileLog: TFileLogObject;
begin
  if FFileLog = NIL then
    FFileLog := TFileLogObject.Create;

  Result := FFileLog;
end;
Die Variable zeigte ins leere

Geändert von DerTobi (30. Apr 2011 um 13:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

AW: AssignFile -> simples prinzip aber ich stolper trotzdem...

  Alt 30. Apr 2011, 13:36
Da zeigt nichts ins Leere. Du hast den Konstruktor als gewöhnliche Methode aufgerufen. Dabei wird natürlich keine Instanz erzeugt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:04 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