Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Ungültige Zeigeroperation/AV obwohl nichts geändert wurde (https://www.delphipraxis.net/190794-ungueltige-zeigeroperation-av-obwohl-nichts-geaendert-wurde.html)

Jim Carrey 8. Nov 2016 16:11


Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Meine IDE bringt mich echt noch zur Verzweiflung.

Ich habe eben mein Projekt kompiliert, wie so oft jeden Tag und plötzlich bekomme ich schon beim Start die Meldung
Zitat:

Im Projekt Test.exe ist eine Exception der Klasse $C0000005 mit der Meldung 'access violation at 0x004035d3: read of address 0x00000078' aufgetreten.
Das Verrückte ist jetzt..
a) ich habe seit der letzten Kompilierung absolut nichts geändert
und
b) selbst ein showmessage( in der ersten Zeile nach -begin- in der DPR-Datei wird nicht angezeigt?

Was ist da schon wieder los? :|

TiGü 8. Nov 2016 16:21

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Gab es ein Windows-Update?

Jetzt ne gescheite Versionsverwaltung. ;) :P

Jim Carrey 8. Nov 2016 16:24

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Gab es ein Windows-Update?
Nein. Updates hab ich schon seit Ewigkeiten deaktiviert.

Zitat:

Jetzt ne gescheite Versionsverwaltung.
Die würde mir auch nichts bringen, denn der Fehler tritt sogar mit einer Version von gestern Abend auf.

Meiner Meinung nach ein IDE-Problem.

Zacherl 8. Nov 2016 16:26

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zeigt der Debugger dir denn nicht die Stelle, an der es crasht? Könnte Code in einem
Delphi-Quellcode:
initialization
Abschnitt sein.

Ghostwalker 8. Nov 2016 16:28

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Eventuell hilft dir FastMM weiter. FullDebugMode einschalten, dann bekommst du mehr Infos.

Jim Carrey 8. Nov 2016 16:32

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Zitat von Zacherl (Beitrag 1353006)
Zeigt der Debugger dir denn nicht die Stelle, an der es crasht? Könnte Code in einem
Delphi-Quellcode:
initialization
Abschnitt sein.

Ich hab den Rechner aus Verzweiflung neu gestartet und nun ist der Fehler weg.
Er kam somit definitiv von der IDE.

Zacherl 8. Nov 2016 16:35

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Zitat von Jim Carrey (Beitrag 1353009)
Er kam somit definitiv von der IDE.

Das bezweifele ich ehrlich gesagt sehr stark.

Jim Carrey 8. Nov 2016 16:37

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Das bezweifele ich ehrlich gesagt sehr stark.
Woher soll es denn sonst kommen?

Ich habe
- mein Projekt mehrmals geschlossen und neu geöffnet
- die IDE mehrmals geschlossen und neu geöffnet
- ein Backup von gestern Abend kompiliert

und immer kam derselbe Fehler. Einzig beim Neustart des Systems kam der Fehler nicht.

blawen 8. Nov 2016 16:47

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Zitat von Jim Carrey (Beitrag 1353011)
Zitat:

Das bezweifele ich ehrlich gesagt sehr stark.
Woher soll es denn sonst kommen?

Ich habe
- mein Projekt mehrmals geschlossen und neu geöffnet
- die IDE mehrmals geschlossen und neu geöffnet
- ein Backup von gestern Abend kompiliert

und immer kam derselbe Fehler. Einzig beim Neustart des Systems kam der Fehler nicht.

Da Du die IDE mehrmals neu gestartet hast, bleibt eigentlich nur noch das Betriebssystem selber übrig...

Jim Carrey 8. Nov 2016 16:59

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Da Du die IDE mehrmals neu gestartet hast, bleibt eigentlich nur noch das Betriebssystem selber übrig...
Soweit hatte ich nicht gedacht. Seltsam ist es dennoch.

Naja, für mich trotzdem kein Grund mein geliebtes Windows 7 zu verlassen :lol:

Luckie 8. Nov 2016 17:17

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Vermutlich machst du irgendwo Murks mit Zeigern. Dass es funktioniert hat und jetzt wieder funktioniert, ist wahrscheinlich reine Glücksahe.

Jim Carrey 8. Nov 2016 17:17

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Zitat von Luckie (Beitrag 1353025)
Vermutlich machst du irgendwo Murks mit Zeigern. Dass es funktioniert hat und jetzt wieder funktioniert, ist wahrscheinlich reine Glücksahe.

Nur wie passt das mit einem Neustart des Systems zusammen?

Zacherl 8. Nov 2016 18:05

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Zitat von Luckie (Beitrag 1353025)
Vermutlich machst du irgendwo Murks mit Zeigern. Dass es funktioniert hat und jetzt wieder funktioniert, ist wahrscheinlich reine Glücksahe.

Definitiv auch meine Vermutung :thumb:

Zitat:

Zitat von Jim Carrey (Beitrag 1353026)
Nur wie passt das mit einem Neustart des Systems zusammen?

Gibt diverse Sachen, die sich nach einem Neustart ändern können. Z.B. werden alle DLLs dank ASLR an eine neue zufällige ImageBase gemappt.

Jim Carrey 8. Nov 2016 18:30

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zu den Pointern kann ich nur sagen... ich verwende nur da Pointer wo das Programm schon lange komplett geladen wurde.
Vorher absolut nicht.

nahpets 8. Nov 2016 19:32

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Das mag ja sein, aber offensichtlich blieb das Problem ja bis zum Systemneustart bestehen.

D. h.: Es besteht die Möglichkeit, dass Du versehentlich irgendwo im Arbeitsspeicher was überschrieben hast, an einer Stellen, an der Du es niemals vermuten würdest.

Zufällig wird aber zu dem Zeitpunkt, an dem die Zugriffsverletzung auftrat, versucht, dort auf den Speicher zuzugreifen, aber leider wurde da was zerstört.

Irgendeine DLL oder das Betriebssystem selbst, hat da wohl irgendwas vermutet, um es auszuführen, aber leider hat das nicht (mehr) geklappt.

Erst durch einen Neustart des Betriebssystem wurde das Problem behoben, da dabei letztlich alles "neu gemacht wird".

Wenn man bei der Arbeit mit Pointern was falsch macht, muss das nicht zwingend das eigenen Programm betreffen, sondern es kann eine Auswirkung "irgendwo" im System oder in anderer Software haben. So ein Fehler muss nichtmal zwingend auffallen, es kommt halt drauf an, wie kritisch die "zerbeulte" Stelle im Arbeitsspeicher ist.

Die Ursache solcher Probleme zu finden ist nicht zwingend trivial, zumal so ein "Seiteneffekt" nicht unbedingt sofort auffallen muss.

Zacherl 8. Nov 2016 19:45

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Zitat von nahpets (Beitrag 1353049)
Wenn man bei der Arbeit mit Pointern was falsch macht, muss das nicht zwingend das eigenen Programm betreffen, sondern es kann eine Auswirkung "irgendwo" im System oder in anderer Software haben. So ein Fehler muss nichtmal zwingend auffallen, es kommt halt drauf an, wie kritisch die "zerbeulte" Stelle im Arbeitsspeicher ist.

Das ist zum Glück unter Windows nicht (mehr) der Fall, sofern man nicht mit MSDN-Library durchsuchenWriteProcessMemory im virtuellen Adressraum eines anderen Prozesses rumspielt. Pages von DLLs haben das COPY_ON_WRITE Flag, wodurch Änderungen an dieser Stelle nur für deinen eigenen Prozess übernommen werden. Höchstens MemoryMappedFiles (MapViewOfFile, NtMapViewOfSection) könnten durch Schreiben an eine falsche Adresse global und permanent bis zum Neustart des Systems beschädigt werden.

Im Grunde hast du aber Recht. Besonders mit deiner letzten Aussage, weshalb ich meistens sogar froh darüber bin, einen Seiteneffekt zu bekommen. Dann weiß ich nämlich, dass irgendwas schief läuft und kann mich auf Fehlersuche begeben.

p80286 8. Nov 2016 20:20

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Zitat von Jim Carrey (Beitrag 1353021)
Naja, für mich trotzdem kein Grund mein geliebtes Windows 7 zu verlassen :lol:

Zitat:

Zitat von Jim Carrey (Beitrag 1353035)
Zu den Pointern kann ich nur sagen... ich verwende nur da Pointer wo das Programm schon lange komplett geladen wurde.
Vorher absolut nicht.

Es ist äußerst unwahrscheinlich, das Windows "schuld" ist. In 99,9% dieser Fälle ist der Programmierer der Fehlerverursacher. Wie in #4 angemerkt ist der
Delphi-Quellcode:
initialization
Abschnitt einer Unit der erste Ort wo man suchen muß.

Gruß
K-H

Jim Carrey 8. Nov 2016 20:23

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
mhhhh... also die einzige Angelegenheit mit Pointer die ich vor dem problem hatte war... ich habe auf eine Adresse zugegriffen, die noch nicht belegt war mit meinem vorgesehenem Inhalt. Sonst hab ich nix gemacht und das Problem trat auch erst ~1 Stunde später auf.

p80286 8. Nov 2016 20:35

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Zitat von Jim Carrey (Beitrag 1353054)
ich habe auf eine Adresse zugegriffen, die noch nicht belegt war mit meinem vorgesehenem Inhalt.

Der übliche Weg ist eigentlich, einen Wert "irgendwo" abzulegen, und dann die Adresse dieses "irgendwo" zu übergeben :gruebel:

Gruß
K-H

Jim Carrey 8. Nov 2016 20:39

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Ich hab mich mit meiner showmessage in der Zeile vertan, das ist alles :stupid:

p80286 8. Nov 2016 20:54

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Zitat von Jim Carrey (Beitrag 1353056)
Ich hab mich mit meiner showmessage in der Zeile vertan, das ist alles :stupid:

Hat irgendjemand behauptet, das solche Fehler aussterben? :mrgreen:

Gruß
k-H

Jim Carrey 8. Nov 2016 21:04

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Naja, ich bin konservativ:
- ich "debugge" mit showmessage-Dialogen
und
- ich mache Backups in ZIP-Archiven :stupid:

Nur hier hatte dummerweise beides nicht funktioniert:
der showmessage-Dialog wurde bei diesem Fehler nicht angezeigt und ein ZIP-Backup von gestern Abend hatte denselben Fehler.

Vielleicht bin ich zu konservativ?

haentschman 9. Nov 2016 04:45

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Moin Jim...:P
Zitat:

Vielleicht bin ich zu konservativ?
Ich bin auch dich der der allen Schei... mit macht. :wink: Aber die Werkzeuge die uns die IDE (u.a. Debugger) zur Verfügung stellt, sind ein muß! :shock: Erklär mir mal wie du ein komplexes Objekt an einem Breakpoint, wenn es denn solche gibt, überwachen willst mit "ShowMessage"... :shock:

Wann kann niemanden zwingen... Aber du macht es dir zu schwer. :shock: Zum Lernen mußt /solltest du dann die gewonnene Zeit nutzen. :P
http://www.delphipraxis.net/41047-tu...ortgeschr.html

PS: Bitte ergänze deine Delphi Version in deinem Profil.

Jim Carrey 9. Nov 2016 09:08

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Danke für die Ermutigung das Debuggen zu erlernen. Aber davon halte ich eher Abstand.
Denn es fängt schon damit an, dass mein angelegtes "Debug"-Profil nicht mal mit den einfachsten Compiler-Switches klar kommt.
So meckert der Compiler z.B. dass an Stelle XY END erwartet wird aber ELSE gefunden wurde, dass Funktion XY keine Forward-Deklaration hat und all so ein Quatsch der überhaupt nicht stimmt.

Ne ne, ich bleibe lieber konservativ.

taveuni 9. Nov 2016 09:36

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Zitat von Jim Carrey (Beitrag 1353080)
So meckert der Compiler z.B. dass an Stelle XY END erwartet wird aber ELSE gefunden wurde, dass Funktion XY keine Forward-Deklaration hat und all so ein Quatsch der überhaupt nicht stimmt.

Ja klar.

#do not feed the troll

Jim Carrey 9. Nov 2016 09:42

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

#do not feed the troll
Statt einen einzigen sinnlosen und umkompletten Satz hier zu schicken:
wie wäre es mit einer Erklärung?

TiGü 9. Nov 2016 09:57

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Zitat von Jim Carrey (Beitrag 1353087)
Zitat:

#do not feed the troll
Statt einen einzigen sinnlosen und umkompletten Satz hier zu schicken:
wie wäre es mit einer Erklärung?

Keiner der ernsthaft Software gegen Geld entwickelt würde so arbeiten und alle hier im Forum schütteln aufgrund deiner Aussagen nur entsetzt ihre Köpfe.

Was soll es bspw. mit den Debugger zu tun haben, wenn aufgrund fehlender Vorwärts-Deklaration oder falsch verschachtelter Kompiler-Schalter dein Programm nicht kompiliert? Entweder dein Programm kompiliert oder nicht?
Das hat doch nichts mit dem Debugger zu tun!

Kann es sein das du hier einfach Begriffe durcheinander würfelst?

Allein schon die Möglichkeit über die Breakpoint Properties -> Advanced -> Eval expression (Haken bei Break rausnehmen) ganz komfortabel Variablen ins Event Log auszugeben würde ich um nichts in der Welt mit MessageBoxen tauschen wollen!
Da schneide ich mir doch vorher lieber einen kleinen Finger ab.

Jim Carrey 9. Nov 2016 09:59

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Keiner der ernsthaft Software gegen Geld entwickelt würde so arbeiten und alle hier im Forum schütteln aufgrund deiner Aussagen nur entsetzt ihre Köpfe.
Ich arbeite nicht gegen Geld sondern nur für mich selber.
Argument abgelehnt.

Zitat:

Was soll es bspw. mit den Debugger zu tun haben, wenn aufgrund fehlender Vorwärts-Deklaration oder falsch verschachtelter Kompiler-Schalter dein Programm nicht kompiliert?
Die Deklarationen existieren alle.
Argument abgelehnt.
Ich habe eine ganz normale Unit mit einer Struktur
Delphi-Quellcode:
type
 TTest = class
  private
  public
 end;

Zitat:

Kann es sein das du hier einfach Begriffe durcheinander würfelst?
Das kann ich leider nicht beantworten.

Bambini 9. Nov 2016 10:13

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Zitat von Jim Carrey (Beitrag 1353089)
Zitat:

Was soll es bspw. mit den Debugger zu tun haben, wenn aufgrund fehlender Vorwärts-Deklaration oder falsch verschachtelter Kompiler-Schalter dein Programm nicht kompiliert?
Die Deklarationen existieren alle.
Argument abgelehnt.

Was für Compiler-Schalter verwendest du da?
Hatte bisher noch nie den Wunsch verspürt mit Compiler-Switches zu spielen. Die Out-Of-Box Funktion hatten bisher alles erfüllt.

Jim Carrey 9. Nov 2016 10:22

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Zitat:

Was für Compiler-Schalter verwendest du da?
Na, ich habe eine Unit, welche in mehreren Projekten verwendet wird. Und damit nur das ins Programm kommt was auch wirklich hineingehört, habe ich Compiler-Bedingungen eingebaut.

DeddyH 9. Nov 2016 10:24

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Und welche? Sry, aber langsam drängt sich auch mir der Verdacht auf, dass Du eher an Trollen als an konstruktiver Mitarbeit interessiert bist.

Jim Carrey 9. Nov 2016 10:24

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Ich weiß gar nicht was ihr immer mit euren Trollen habt aber ich trolle garantiert nicht!

Welche Compiler-Bedingungen ist doch schnurz-egal. Es sind Bedingungen, das ist alles. Die kennt doch jeder oder nicht?

Und nur weil hier EIN Idiot im Forum geschrieben hat Don't feed the troll bin ich nun ein Troll oder wie?
Manchmal frage ich mich, ob ich hier in einem Sandkasten gelandet bin.

DeddyH 9. Nov 2016 10:27

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Um es mal in Deinen Worten zu sagen: Argument abgelehnt.

Jim Carrey 9. Nov 2016 10:32

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Ich habe erst letztens noch einen Beitrag gelesen in dem stand, dass viele langjährige Mitglieder der DP plötzlich die Schulter zeigten und verschwunden sind.
Ich verstehe jetzt warum.

Warum wird man hier von euch verbleibenden langjährigen Mitgliedern eigentlich immer fertig gemacht?
Wenn ihr keine Lust mehr habt auf dumme Fragen oder Sachverhalte zu antworten, dann unterlasst es doch einfach!

Bestes Beispiel für patzige Antworten in diesem Forum ist Luckie.

Bambini 9. Nov 2016 10:38

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Ok, du meinst Compiler Bedingungen, so etwas wie {$IFDEF ButterByTheFish} ...{$ENDIF}.
Unter Compiler-Switches verstehe ich dcc32.exe /Switch1.
Wenn der Compiler meckert, dass es keine Forward Deklaration gibt, du die aber im Code siehst. Liegt es vermutlich daran,
das der Compiler deine Unit mit der neuen Bedingung nicht neu kompiliert, da das Datum der *.PAS = *.DCU ist.
Neue Compiler-Bedingungen führen nicht zum Neukompilieren der gesamten Units. Das muss man selbst anstoßen.
Wird also eine Unit mit von 2 Projekten mit unterschiedlichen Bedingungen, läuft man unweigerlich zu diesem Problem.

Sherlock 9. Nov 2016 10:43

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Bedenke bitte auch, daß auf jeden Fall bei der Verwendung von bedingter Compilierung immer ein komplettes Build empfohlen wird.

Dann sollte man noch anmerken, daß eine gemeinsame Unit, aus der Zeugs je nach Projekt ausgeblendet oder eingeblendet werden muss eben keine gemeinsame Unit ist. Nota bene: Damit meine ich nicht Architektur Zeugs wie {$IFDEF MACOS}.

Sherlock

sh17 9. Nov 2016 11:03

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Werden Zusatzkomponenten wie etwa VirtualTreeView genutzt?

Daniel 9. Nov 2016 11:26

AW: Ungültige Zeigeroperation/AV obwohl nichts geändert wurde
 
Der Fragesteller hat auf eigenen Wunsch das Forum verlassen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:21 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