Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi mysteriöse EAccessViolation (https://www.delphipraxis.net/2382-mysterioese-eaccessviolation.html)

BrainCode 20. Jan 2003 22:02


mysteriöse EAccessViolation
 
Ich habe ein ziemlich nerviges Problem: Bei einigen Programmen passiert es, dass eine AccessViolation auftritt, nachdem der Code der Prozedur abgearbeitet ist. Wenn ich dieses Programm auf Nailor's Rechner ausführe, zeigt mir Delphi eine ordentliche Fehlermeldung am richtigen Zeitpunkt inklusive Syntax-Highlighting an, mit Hilfe derer ich dann den Fehler beseitigen kann.
Seit ich diesen Fehler das erste Mal beobachtete, habe ich Windows einmal komplett neu installiert, aber der Fehler ist nicht weg. Ich dachte eigentlich, der Fehler würde von einer fehlerhaften Compilereinstellung kommen, aber auch das Löschen aller Dateien im Programmordner außer *.dpr *.pas *.dfm *.res half nichts.

Gollum 20. Jan 2003 22:06

Hallo,

wie sieht der Code aus, der den Fehler verursacht?

czapie 21. Jan 2003 18:26

Variablen-Überlagerung?
 
Hallo,

wir haben bei uns im Info-Lk ja auch so ab und zu unsere Probleme, aber so eine Zugriffsverletzung kommt oft von irgendeiner Überlagerung von irgendwelchen Variablen oder Objektattributen.
Nenn mal die Variablen einfach anders, wenns geht, ich weiß klingt blöd, hat aber seltsamer schon mal geklappt ???

Czapie.

BrainCode 21. Jan 2003 19:13

Mein Code ist folgender:

Code:
const
  count = 1024;
var
  datei: tfilestream;
  buffer: string;
  r: longint;
begin
  if opendialog1.Execute then begin
    datei := tfilestream.Create(opendialog1.FileName,fmopenread);
    setlength(buffer,count);
    r := datei.Read(buffer,count);
    memo1.Text := buffer;
  end;
end;
Durch Auskommentieren habe ich bemerkt, dass der Fehler in der Zeile, die mit "r :=" anfängt, liegt, die Fehlermeldung bekomme ich aber erst angezeigt, nachdem die komplette Prozedur abgearbeitet ist, auch im Einzelschrittmodus mit F7.

Daniel B 21. Jan 2003 19:19

Hi,

erstens, was ist "r"?
Und hast Du was grösseres vor, ausser eine Datei in eine Memo zu laden?

Grüsse, Daniel :hi:

BrainCode 21. Jan 2003 20:26

r hat die Deklaration r: longword, hab ich aus Versehen aus dem Posting gelöscht.
Das Einlesen der Daten soll noch in einen Loop, weil ich eine ganze Datei einlesen will, aber nach dem ersten Auftritt des Fehlers hab ich die Funktion erstmal zusammengekürzt.

jbg 21. Jan 2003 20:33

Ändere
Zitat:

r := datei.Read(buffer,count);
mal in
Delphi-Quellcode:
r := datei.Read(buffer[1],count);
um.

Gollum 21. Jan 2003 21:39

Hallo,

Code:
  datei := tfilestream.Create(opendialog1.FileName,fmopenread);
  --> setlength(buffer,count);
wo wird Count initialisiert, bzw. welchen Wert hat die Variable? Wenn Count<0 dann kann ich mir durchaus vorstellen, dass dann Read fehlschlägt.

Ausserdem ist per Definition der Rückgabewert von Read ein LongInt. Ändere die Variable r entsprechend.

Chewie 21. Jan 2003 21:53

Zitat:

Zitat von Gollum
wo wird Count initialisiert, bzw. welchen Wert hat die Variable? Wenn Count<0 dann kann ich mir durchaus vorstellen, dass dann Read fehlschlägt.

Schau mal in den const-Abschnitt: count hat den Wert 1024.

Luckie 21. Jan 2003 22:35

Also wenn du nichts größeres mit der Datei vor hast, außer im Memo anzeigen oder editieren, dann nimm doch:
Delphi-Quellcode:
Memo1.Lines.LoadfromFile('c:\Test.txt');


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 Uhr.
Seite 1 von 2  1 2      

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