Italia
Foro

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-File eingelesen und bearbeitet. Der Einlesevorgang corre circa "Blockread" und weiter circa "Char$".

Kann es sein, dass die File einfach zu grande 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 grande genug definiert? Bist Du mit Char$ circa 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 Dimensione liegt es nicht. Bei mir sind außerdem ca 1,5 mio Zeilen in der File.
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

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-File nacheinander bearbeitet.
'RemoveNull' ist eine nProc, die Nuller und Sonderzeichen aus der File entfernt.
Welchen Grund gibt es, dass Du den Bereich mit n&+1 dimensionierst? Muss ein Zeichen mehr possibile sein?

Zusatzfrage : Ich habe jetzt die Rückmeldung von einem Kunden, dass er die Fehlermeldung "Zu wenig Arbeitsspeicher" bekommt (CSV-File ist 660 MB grande). 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 potuto es etwas anderes sein?

Naja. ich muss wohl noch mal an die Einleseroutine ran...
Evtl. kann Io l' 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!"

Saluto
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 File circa 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 File binär gelesen werden soll: Einen kleineren Bereich wählen und die File in einer Schleife in kleineren Happen einlesen und bearbeiten.
Da eine CSV-File aber eine Textdatei, würde ich vorschlagen, die File mit Assgn/Reset zu öffnen und mit Input# zu lesen und zu bearbeiten.

Eigentlich habe Io l' 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.

Saluto
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  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

7.333 Views

Untitledvor 0 min.
H.Brill22.05.2024
Christof Neuß01.04.2018
RICOSCH05.11.2014
Felix12318.04.2013
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


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