AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein EAccessViolation beim Schreiben von Daten in Datei oder Stream
Thema durchsuchen
Ansicht
Themen-Optionen

EAccessViolation beim Schreiben von Daten in Datei oder Stream

Ein Thema von DualCoreCpu · begonnen am 3. Aug 2015 · letzter Beitrag vom 4. Aug 2015
Antwort Antwort
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: EAccessViolation beim Schreiben von Daten in Datei oder Stream

  Alt 3. Aug 2015, 10:05
Aber wenn doch CreateWnd nirgends aufgerufen wird, wie lautet denn dann der Dateiname?
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: EAccessViolation beim Schreiben von Daten in Datei oder Stream

  Alt 3. Aug 2015, 10:09
Debugger nehmen, Haltepunkt auf die Zeile, wo der FileStream erzeugt wird und im Debug-Mode starten.

Hält der Debugger jetzt dort an?

Nein -> Dann sorg dafür, dass die Methode auch aufgerufen wird.

So einfach kann einfach sein.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: EAccessViolation beim Schreiben von Daten in Datei oder Stream

  Alt 3. Aug 2015, 10:11
So einfach kann einfach sein.
Wenn einfach einfach einfach ist
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
DualCoreCpu
(Gast)

n/a Beiträge
 
#4

AW: EAccessViolation beim Schreiben von Daten in Datei oder Stream

  Alt 3. Aug 2015, 10:42
Danke für die Antwort!

Komplette Pfadangabe hilft leider nicht.

Wie war das gleich noch mal mit dem Feststellen ob Schreibrechte, aus dem Programm heraus?

Wenn das Progaramm gestartet ist, kann ich zumindest Dateien in das Verzeichnis kopieren, in welchem das Programm liegt.

@baumina, @Union:

Ja, danke Euch, CreateWnd war das Problem.

Allerdings erhalte ich jetzt eine EFCreateError Exception, egal, ob ich CreateWnd in FormCreate aufrufe oder nicht.

Hieraus ergibt sich neben der Ursache meines Problems eine Verständnisfrage:

- Wie ist die Aurufreihenfolge?

Gewöhnlich wird ein Create Konstruktor zur Initilalisierung der Klasse aufgrufen, im Formular kommt noch FormCreate dazu.

Wann in dieser Reihenfolge wird CreateWnd aufgerufen? Danach oder zwischen Create und Formcreate?

Oder muss ich zwingend selber für den Aufruf sorgen.

Bei mir allerdings kommt die EFCreateError Exception, wenn ich das OVERRIDE dahinter schreibe. Ohne override funktioniert es jatzt. Was ein Workaround wäre, aber nun würd ich gerne wissen wie die korrekte Aufrufreihenfolge ist.
  Mit Zitat antworten Zitat
Benutzerbild von frankyboy1974
frankyboy1974

Registriert seit: 7. Apr 2015
Ort: SH
169 Beiträge
 
Delphi XE7 Professional
 
#5

AW: EAccessViolation beim Schreiben von Daten in Datei oder Stream

  Alt 3. Aug 2015, 11:17
Hallo,

ich würde jetzt mal vermuten da fehlt ein inherited; in der Methode CreateWnd. Ich musste mich auch erst mal einlesen, ich habe das gefunden

'CreateWnd is called automatically when the control is first created or when the underlying screen object must be destroyed and recreated to reflect property changes. Override CreateWnd to pass additional initialization messages to the screen object when it is created. '.

Soweit ich mich erinnere, muss du wenn du eine Funktion überschreibst auch ein inherited aufrufen (Ich bin kein Delphi-Guru).

mfg

frank
Java ist auch eine Insel.
Ist Delphi von Oracle?
In meiner Buchstabensuppen fehlt das C++!
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: EAccessViolation beim Schreiben von Daten in Datei oder Stream

  Alt 3. Aug 2015, 12:00
Ich persönlich würde CreateWnd nicht benutzen. Im FormCreate das erstellen was man braucht und im FormDestroy alles wieder freigeben.
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#7

AW: EAccessViolation beim Schreiben von Daten in Datei oder Stream

  Alt 3. Aug 2015, 13:33
Die Frage die ich mir grad stelle: Wenn du FormCreate verwendet, wofür benötigst du jetzt noch CreateWnd?
Und angenommen das
Delphi-Quellcode:
  FStream := TFileStream.Create('Testfile.def', fmCreate);
   FFileWriter := TWriter.Create(FStream,1024);
steht jetzt im FormCreate, wo tritt denn die AccessViolation auf?

Darüberhinaus solltest du ggf. auch prüfen, ob den TFilestream.Create auch von Erfolg gekrönt ist, bevor du ihn an den TWriter weitergibst.
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo

Geändert von Captnemo ( 3. Aug 2015 um 13:36 Uhr)
  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 10:26 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