AGB  ·  Datenschutz  ·  Impressum  







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

mysteriöse EAccessViolation

Ein Thema von BrainCode · begonnen am 20. Jan 2003 · letzter Beitrag vom 23. Jan 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von BrainCode
BrainCode

Registriert seit: 18. Jan 2003
119 Beiträge
 
#1

mysteriöse EAccessViolation

  Alt 20. Jan 2003, 22:02
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.
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#2
  Alt 20. Jan 2003, 22:06
Hallo,

wie sieht der Code aus, der den Fehler verursacht?
  Mit Zitat antworten Zitat
czapie

Registriert seit: 17. Nov 2002
Ort: Berlin
384 Beiträge
 
Delphi 5 Standard
 
#3

Variablen-Überlagerung?

  Alt 21. Jan 2003, 18:26
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.
  Mit Zitat antworten Zitat
Benutzerbild von BrainCode
BrainCode

Registriert seit: 18. Jan 2003
119 Beiträge
 
#4
  Alt 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.
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#5
  Alt 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
  Mit Zitat antworten Zitat
Benutzerbild von BrainCode
BrainCode

Registriert seit: 18. Jan 2003
119 Beiträge
 
#6
  Alt 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.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7
  Alt 21. Jan 2003, 20:33
Ändere
Zitat:
r := datei.Read(buffer,count);
mal in
r := datei.Read(buffer[1],count); um.
  Mit Zitat antworten Zitat
Benutzerbild von Gollum
Gollum

Registriert seit: 14. Jan 2003
Ort: Boxberg
456 Beiträge
 
Delphi 10.1 Berlin Professional
 
#8
  Alt 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.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#9
  Alt 21. Jan 2003, 21:53
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.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10
  Alt 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:
Memo1.Lines.LoadfromFile('c:\Test.txt');
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 07:13 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