Deutsch
Forum

Fehlermeldung Exception EAccessViolation...???

 

Christof
Neuß
Hallo Leute,

kann mir jemand bei dieser Fehlermeldung weiterhelfen?

Exception EAccessViolation in Modul ntdll.dll bei 0004A1B.
Zugriffsverletzung bei Adresse 77A7A41B in Modul 'ntdll.dll'.
Schreiben von Adresse 00000008

An der entsprechenden Programmstelle wird eine CSV-Datei eingelesen und bearbeitet. Der Einlesevorgang läuft über "Blockread" und weiter über "Char$".

Kann es sein, dass die Datei einfach zu groß ist (hier sind es knapp 300 MB) oder zu viele Zeilen enthält.

Hatte das schon mal jemand?

DANKE

Oh, äh...meine Signatur stimmt nicht mehr. Muss ich noch ändern. Das Programm wurde mit XPROFAN X2 erstellt.
 
Win10 16 GB RAM
07.09.2011  
 




Jörg
Sellmeyer
Hier wäre eine Widergabe Deines Codes sicher sinnvoller gewesen. So eine Fehlermeldung kann (vielleicht) MS interpretieren.
Hast Du den Bereich groß genug definiert? Bist Du mit Char$ über die Bereichsgrenze rausgegangen?
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
07.09.2011  
 




Jörg
Sellmeyer
Ich hab's gerade getestet. An der Größe liegt es nicht. Bei mir sind außerdem ca 1,5 mio Zeilen in der Datei.
KompilierenMarkierenSeparieren
Declare Datei$,b#,n&
Datei$ = "grossedatei.csv"
Print Datei$
n& = FileSize(Datei$)
Dim b#,n& + 1
Assign #1,Datei$
OpenRW #1
print Blockread(#1,b#,0,n&)
Close #1
Randomize'fehlte noch

WhileLoop 10

    Locate 3,1
    print Char$(b#,Rnd(n&),1000)'hier könnte es knallen, weil keine Überprüfung, ob über die Bereichgrenze gelesen wird.

Wend

WaitInput
 
Windows XP SP2 XProfan X4
... und hier mal was ganz anderes als Profan ...
07.09.2011  
 




Christof
Neuß
Hallo Jörg,

bei mir sieht das ungefähr so aus:
KompilierenMarkierenSeparieren
DatenDatei$=$ProgDir+"Daten\\"+CSV_Datei$+".CSV"
DateiLaenge&=FileSize(Datendatei$)
Dim Bereich#, DateiLaenge&
DateiLaenge&=@BlockRead(DatenDatei$, Bereich#, 0, DateiLaenge&)'Damit ist DateiLaenge& = Anzahl gelesener Zeichen
DatenZeilen$=Char$(Bereich#,0,DateiLaenge&)
DatenZeilen$=RemoveNull(DatenZeilen$)

Es werden mehrere CSV-Dateien nacheinander bearbeitet.
'RemoveNull' ist eine nProc, die Nuller und Sonderzeichen aus der Datei entfernt.
Welchen Grund gibt es, dass Du den Bereich mit n&+1 dimensionierst? Muss ein Zeichen mehr möglich sein?

Zusatzfrage : Ich habe jetzt die Rückmeldung von einem Kunden, dass er die Fehlermeldung "Zu wenig Arbeitsspeicher" bekommt (CSV-Datei ist 660 MB groß). Bisher war ich immer der Meinung, das a) 4 GB Hauptspeicher ausreichen müssten und b) WindowsVista doch Plattenspeicher zum Auslagern nutzt, wenn nicht genügend Hauptspeicher vorhanden ist. Oder könnte es etwas anderes sein?

Naja. ich muss wohl noch mal an die Einleseroutine ran...
Evtl. kann ich den Blockread ja aufteilen und so kleiner Stückchen einlesen. Da wird es wohl schwierig, das Ganze nachher wieder richtig zusammen zu setzen.

DANKE erst mal und bis denne...
 
Win10 16 GB RAM
09.09.2011  
 




RGH
Es wäre hilfreich, wenn Du einen kurzen lauffähigen (!) Code mit einer entsprechenden CSV-datei zur Verfügung stellst, mit der man das Problem nachvollziehen kann. Nach einem Fehler, den ich nicht bei mir nachvollziehen kann, kann ich nicht suchen.

"Ein nicht reproduzierbarer Bug kann nicht gefixt werden!"

Gruß
Roland
 
XProfan X2
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
09.09.2011  
 




Christof
Neuß
Hallo Roland,

ja, ist schon klar. Ich muss den Fehler erst mal bei mir reproduzieren (können). Und wenn ich dann nicht weiterkomme, stelle ich hier auch mal einen entsprechenden Code ein.

Es hätte ja sein können (das war meine leise Hoffnung), dass jemand ähnliche Erfahrungen gemacht hat und z.B. gleich gesagt hätte "Klar, das kann nicht funktionieren, da Dateien über 500 MB gar nicht mit Blockread eingelesen werden können." oder "Es liegt evtl. gar nicht an der Dateigröße, sondern an den enthaltenen Zeichen. Das Sonderzeichen Ü führt zum Absturz beim Einlesen." oder...

Trotzdem "Danke". Ich find's schon toll, was man hier alles an Unterstützung bekommt.
 
Win10 16 GB RAM
09.09.2011  
 



Das System muss die 660 MB auch am Stück vorrätig haben. Selbst wenn der verfügbare Speicher viel größer ist, sagt das nicht aus, dass so ein großes freies Stück existiert. Bei so Riesendateien empfiehlt es sich, sie stückchenweise abzuarbeiten.
 
09.09.2011  
 




RGH
Hier kann ich Frank nur zustimmen:

Wenn schon die Datei binär gelesen werden soll: Einen kleineren Bereich wählen und die Datei in einer Schleife in kleineren Happen einlesen und bearbeiten.
Da eine CSV-Datei aber eine Textdatei, würde ich vorschlagen, die Datei mit Assgn/Reset zu öffnen und mit Input# zu lesen und zu bearbeiten.

Eigentlich habe ich den DIM-Befehl so programmiert, dass er eine ordentliche Fehlermeldung ausgibt, wenn der angeforderte Speicher nicht bereitgestellt werden kann. Es gibt offensichtlich aber Situationen, wo mir Windows mit einem Programmabbruch zuvorkommt.

Allerdings kann die Windows-Meldung auch andere Ursachen haben.

Gruß
Roland
 
XProfan X2
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
09.09.2011  
 



Jo,

Christof Neuß (07.09.11)

Schreiben von Adresse 00000008


sieht schon verdächtig z.B. nach einer gescheiterten String- bzw. Speicheroperation aus. Z.B. zu GlobalAlloc schreibt M$: "If the function fails, the return value is NULL".

Übrigens... meint Windows mit "Schreiben von Adresse" etwa "Schreiben an Adresse" oder "Lesen von Adresse"? Ich kann es nicht reproduzieren da ich grad nur Win7 unter den Fingern habe und die Meldungen dort etwas nochkomischer sind.

@Christof: Diese nProc die Du da nutzt... wenn Du möchtest dann kann ich Dir die nochmal deutlich optimieren sodass sie z.B. nochmal 5 mal schneller ist.
 
09.09.2011  
 



RGH (09.09.11)
"Ein nicht reproduzierbarer Bug kann nicht gefixt werden!"


Nichtmal durch Zufall?
 
09.09.2011  
 




E.T.
iF (09.09.11)

Nichtmal durch Zufall?


Nein, genau so wenig wie durch Durchfall oder Unfall

... höchstens durch 'nen Einfall
 
Grüße aus Sachsen... Mario
WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte...
10.09.2011  
 



Gib Dir einen Ruck!
 
10.09.2011  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

7.391 Betrachtungen

Unbenanntvor 0 min.
H.Brill22.05.2024
Christof Neuß01.04.2018
RICOSCH05.11.2014
Felix12318.04.2013
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie