Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Sa Jul 12, 2025 21:15

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 27 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: So Nov 09, 2003 17:00 
Offline
DGL Member

Registriert: Mo Nov 03, 2003 20:23
Beiträge: 66
Ähm... egal welcher fehler es ist. Delphi an sich hat wenig damit zu tun. Man muss sich stets fragen, WARUM der fehler zu WELCHEM Zeitpunkt kommt.

- Auf Pointer wird eine Klasse oder Variable gesetzt.
- Speicher von Pointer wird gefüllt.
- Speicher von Pointer wird ausgelesen.
- Speicher wird freigegeben
- Speicher von Pointer wird ausgelesen :: INVALID POINTER OPERATION!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 09, 2003 17:15 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Mai 31, 2003 23:59
Beiträge: 42
hab jetzt gesehen, dass auch ein paar VCL Warnungen beim Compilieren angezeigt werden.
Ich kann mir gut vorstellen, dass es in diese Richtung ein Fehler ist, weil ich beim Zusammenstellen der GUI ziemlich chaotisch Buttons etc erstellt und mal hin und her umbenannt habe. Ich werde das jetzt mal neu aufbauen.

Hab das ganze hier mal angehängt.. aber achtung, alles sehr chaotisch :roll:

Edit:
Um das Attachement möglichst klein zu halten, hab ich alle nicht notwendigen Dateien gelöscht..... und jetzt geht es plötzlich ohne Fehler.
Versteh ich echt nicht, ich hab ja zwischendrin das ganze ja schonmall neu compiliert.
Naja, egal. bin jetzt wirklich froh dass alles funktioniert. Vielen Dank an euch alle.
Ich hab die Anlage jetzt wieder runtergenommen. Falls aber jemand daran interessiert ist (ich wüsste nicht wieso :D ) kann ich sie auch wieder hochladen.

_________________
"OpenGL verbindet"<br>- für die Völkerverständigung zwischen Delphi und C++ ^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 09, 2003 17:24 
Offline
DGL Member

Registriert: Mo Nov 03, 2003 20:23
Beiträge: 66
öhm... bei mir läuft alles... soweit ich das sagenkann zumindest... hab ja kein gerät an meinem serialport hängen ^^

wo soll denn welcher fehler kommen?


[edith]... ok, dann ist klar[/edith]


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 09, 2003 17:41 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
@cyanide: Um einen solchen Fehler zu bekommen genügt es auch, wenn du in Speicherstellen schreibst die zu einem anderen Objekt gehören und du dann auf dieses zu greifst. Der Fehler ist in etwa so aussagekräftig wie DER Windows95 Fehler. Also der "Es ist ein schwerer Fehler aufgetreten." Fehler. ;-)

@Mindwalker: Also was wüste GUI Konstelationen angeht kann ich auch ein Wörtchen mitreden aber bisher ist mir so etwas noch nie passiert, dass solch ein Dehler daraus resultiert. Deswegen solltest du auch davon ausgehen, dass der Fehler möglicherweise noch existiert derzeit aber nur nicht zum ausbruch kommt, weil er in eine ungefährliche Gegend verlagert wurde. (oder so was)

Aber dennoch ist es immer wieder schön, dass sich Fehler selbst auflösen. ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 09, 2003 17:44 
Offline
DGL Member

Registriert: Mo Nov 03, 2003 20:23
Beiträge: 66
Lossy eX hat geschrieben:
@cyanide: Um einen solchen Fehler zu bekommen genügt es auch, wenn du in Speicherstellen schreibst die zu einem anderen Objekt gehören und du dann auf dieses zu greifst.


Du meinst jenes Zeitgleich? Weil sonst sollte dieses Example ohne weitere Probleme funtzen :?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 09, 2003 18:40 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Nein. Ich meinte es so, wenn du zum Beispiel ein Array und noch ein Array definiert hat. Und bei array 1 aus versehen ein oder zwei elemente zu viel schreibst. Dann schreibst du ja in den Speicherbereich des zweiten Arrays hinein. Und dann solltest du nicht mehr auf das zweite zugreifen weil es dann "zerstört" wurde. Bei Array liegt an der ersten Stelle (meines Wissens) (vor ALLEN Elementen) die Größe. Die man nicht manuell verändern sollte weil man eigentlich auch nicht drauf zugreifen kann. Das Problem ist dabei ganz einfach, dass du in Speicher von anderen Objekten rumschreibst in dem man da gar nix zu suchen hat. Und dann kann es auch zu solch einem Fehler kommen. Wenn man eine hochgradig dynamische Struktur hat kann so etwas schnell mal passieren.
Ich hoffe das war jetzt nicht ganz so verwirrend. ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 09, 2003 20:52 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Mai 31, 2003 23:59
Beiträge: 42
gerade hab ich meiner Gui noch ein Label hinzugefügt und schon hatte ich den Fehler wieder :roll:
Naja, jetzt macht der mir keine Angst mehr. :D

Edit: Auch wenn mir als Lösung irgendwie doch nur einfällt die Gui neu zu machen... leider.

_________________
"OpenGL verbindet"<br>- für die Völkerverständigung zwischen Delphi und C++ ^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 09, 2003 21:29 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Mai 31, 2003 23:59
Beiträge: 42
Nun hab ich die gui neu aufgebaut und der Fehler erscheint immer noch. Anscheinend zerschießt mein Programm doch irgendetwas.
Naja, ist mir jetzt auch egal, dann specke ich die Gui halt ab.

_________________
"OpenGL verbindet"<br>- für die Völkerverständigung zwischen Delphi und C++ ^^


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 09, 2003 22:24 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Delphi ordnet die Variablen und alles ja selber im Speicher an. Er richtet die dort Teilweise an den Word bzw. DWord grenzen aus. Es kann sein, dass du aus versehen irgendwo über deinen verfügbaren Bereich hinweg greifst (Array mit zu großem Elementindex). Und durch die spezielle Ausrichtung der Variablen und die Größe deiner Fensterelemente kommt es teilweise zu solchen Fehlern. Also eigntlich könnte ich wissenschaftler werden. Bei solch wüsten Thesen. ;) Aber die sind ja bekanntlich die Wahrscheinlichsten oder so was.
Ne im Ernst. Für mich ist das einzig wahrscheinlichste Möglichkeit. Vielleicht solltest du deine Arrays mal genauer unter die Lupe nehmen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 10, 2003 08:24 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 12, 2002 07:15
Beiträge: 916
Wohnort: Dietzhölztal / Hessen
Programmiersprache: C/C++, Obj-C
Also ich hab' mir den Source-Code nicht angeschaut, aber den Fehler auch mal bekommen. Meistens ist das Problem recht simpel:

- Entweder Du schreibst in 'nen Speicherbereich, in den Du nicht schreiben darst (bsp Move(Speicher, Speicher2, 512) anstelle von Move(Speicher^, Speicher2^, 512)) oder dur versucht, in meinem Beispiel, 512 Bytes zu schreiben hast aber nur 500 oder 511 belegt. Oder Du greifst auf Speicher zu, der Freigegeben wurde (was Deiner Beschreibung entsprechen würde).

_________________
Und was würdest Du tun, wenn Du wüsstest, dass morgen Dein letzter Tag auf dieser Erde ist?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 10, 2003 17:19 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Mai 31, 2003 23:59
Beiträge: 42
so, ich hab den Fehler jetzt endlich beseitigt. Es war wie ihr vermutet habt nen Array Überlauf.
Hierbei muss ich sagen, dass ich den Fehler schon viel früher entdeckt und korrigiert habe. Nur hat meine Projektdatei, wegen meine vielen Sicherungsspeicherungen und Verschiebungsspielchen auf eine ganz andere "klassen.pas" Datei zurückgegriffen, anstatt auf die im selben Ordner... und ich aber nur die im selben Ordner korrigiert hab, was natürlich keine Wirkung brachte :P
Als ich dann die "Überlaufkontrolle" in den Optionen entdeckt und aktiviert habe, war ich doch sehr erstaunt, wie mir plötzlich die Wurzel alles Übels in einer Datei von "ganz wo anders" angezeigt wurde.
Vielen Dank an all die Experten hier, besonders Lossy hat ja schon relativ früh den richtigen Riecher gehabt. Hätte ich diese "Überlauf" Option früher zwischen den, für mich größtenteils, kryptischen Compiler Optionen wär das ganze wahrscheinlich auch erheblich schneller über die Bühne gegangen :roll:

_________________
"OpenGL verbindet"<br>- für die Völkerverständigung zwischen Delphi und C++ ^^


Zuletzt geändert von Mindwalker am Mo Nov 10, 2003 18:27, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 10, 2003 18:06 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
kleine empfehlung:
http://www.delphigl.com/main.php?id=2&p ... ng&print=1
dort ist der tipp mit bereichs und überlaufsprüfung drinne - und viele andere kleine sachen.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 27 Beiträge ]  Gehe zu Seite Vorherige  1, 2
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 15 Queries | GZIP : On ]