![]() |
DFM(?)- Fehler
Seit einiger Zeit treten bei einem meiner Delphi-Projekte setsame Zugriffsverletzungen auf, die mal da sind, mal nicht (meistens nach einem PC-Neustart). Besonders beliebt bei Delphi ist die Verletzung an Adresse '000000' in modul '000000', die während der Laufzeit und immer beim Beenden des Projektes, wenn das Programm nicht läuft, auftritt. :wall: Manchmal stürtzt auch gleich der ganze Computer ab. :evil: Ich glaube inzwischen, das irgendetwas mit der *.DFM- Datei des MainFormulars nicht stimmt. Gibt es vielleicht ein Tool, was die Dateien überprüft und repariert?
|
Re: DFM(?)- Fehler
Wenn selbst der Komplette Rechner abstürzt würde ich fast auf einen HW-Defekt tippen.
Besorg dir mal die Diagnose-CD der c't und lass diverse Lasttest auf RAM, HD etc. durchlaufen. |
Re: DFM(?)- Fehler
Wie kommst du denn zu dieser Vermutung? :gruebel:
Sonst öffne die *.dfm einfach mit einem Texteditor und guck sie dir an. :gruebel: Ich glaube nicht das es was damit zu tun hat. ;) |
Re: DFM(?)- Fehler
Zitat:
Außerdem kommt der, falsch, die Fehler immer auch zur Entwicklungszeit, wenn delphi2005 nich vorjer nach der 000000- Zugriffsverletzung selber abstürtzt. |
Re: DFM(?)- Fehler
Die häufigsten Gründe für diese AVs sind:
1. Man hat irgendwelche Componenten, die man dynamisch erzeugt hat, dann in FormDestroy vergessen zu free'n. 2. Man versucht in FormDestroy eine Komponente zu free'n (auch indirekt), die man aber irgendwo/wie vorher schon ge'free't hat. Also diesbezüglich event. nochmal genau durchchecken. |
Re: DFM(?)- Fehler
Oder man hat auf dem formular eine Komponente, die mit einer anderen Komponente, die man gelöscht hat,"verknüpft" ist.
Also in der Art: Form1.Menu | MainMenu1 Dann Mainmenu1 gelöscht und *ZACK* (Die meisten Komponenten fangen den fehler allerdings irgendwie ab) Trotzdem ist mir mal das neulich mit einer Action.Toolbar so ergangen. Da ging plötzlich gar nix mehr :| |
Re: DFM(?)- Fehler
Die Fehler treten auf, seit ich Zwei verknüpfte Komponenten entfernt habe!
Zitat:
:?: Kann es sein, dass ich zu viele TBitmap Variablen (ca. 10 stück) erstellt habe? Neulich hatte ich bei dem Projekt einen "Stack-Überlauf". Was ist das genau? |
Re: DFM(?)- Fehler
Sind sie wirklich alle mit Create erzeugt?
Auf welche Variablen/Objekte greifen denn all diese Komponenten zu? // Edit: die Labels etc... Es könnte auch (z.b.) an der OnPaint-Routine des Formulars liegen. Da könnte ja z.b. sowas stehen:
Delphi-Quellcode:
wenn dann in der TPaintbox.onpaint dies stünde:
procedure TForm1.FormPaint;
{ ... } paintbox1.width := 100; bitmap := tBitmap.Create; // Globales TBitmap-Objekt { ... }
Delphi-Quellcode:
Dann würde auf eine noch nicht erzeugtes Objekt zugegriffen.
{ ... }
paintbox1.canvas.draw(0,0,bitmap); { ... } Es käme also zu einer Zugriffsverletzung. (Und außerdem zum unten genannten Fehler ;)) Hast du mal Haltepunkte gesetzt? PS: Zitat aus der Onlinehilfe: Zitat:
Delphi-Quellcode:
daraufhin würde der Button und damit auch das Formular neugezeichnet, wobei der code immer wieder und wieder ausgeführt werden würde. Das führt nach einiger Zeit zu einem "Stack-Überlauf".
Button1.width := 100;
|
Re: DFM(?)- Fehler
Ein Label (Label1) wird im 250ms- Takt mit neuen Werten beschrieben, die Prozedur zum zeichnen (Per Timer im 100ms Takt):
Delphi-Quellcode:
Und der Timer mit der fraglichen Labelbeschriftung:
procedure TForm1.draw_map;
var i, j: Integer; begin for i := 0 to breite do for j := 0 to hoehe do begin case map[i, j] of //Map ist ein Array -1: bmp := picture[1]; 0: bmp := picture[0]; -3: bmp := picture[3]; -4: bmp := picture[4]; -5: bmp := picture[5]; -6: bmp := picture[6]; -7: bmp := picture[7]; -8: bmp := picture[8]; -9: bmp := picture[9]; else bmp := picture[2]; end; PaintBox1.Canvas.Draw(i*raster, j*raster,TGraphic(bmp)); end; end;
Delphi-Quellcode:
Beim klick auf einen Button wir das Label zusätzlich verschoben: TimeLabel.Left:=584; .
procedure TForm1.TimerTimer(Sender: TObject);
begin Label1.Caption:=IntToStr(XTime); dec(XTime); end; Ich hab das mal auskommentiert, alles lief ohne Fehler, beim beenden des Programms gabs wieder ne Zugriffsverletzung. |
Re: DFM(?)- Fehler
Delphi-Quellcode:
Lass die Umwandlung in TGraphic weg.
PaintBox1.Canvas.Draw(i*raster, j*raster,TGraphic(bmp));
Kann es sein, dass du in formdestroy (oder was auch immer) erst das array freigibst und dann bmp? (oder Umgekehrt) PS:
Delphi-Quellcode:
Wieso Minuszahlen? Wären positive Zahlen nicht praktischer? o.O
case map[i, j] of
-1: bmp := picture[1]; 0: bmp := picture[0]; -3: bmp := picture[3]; -4: bmp := picture[4]; -5: bmp := picture[5]; -6: bmp := picture[6]; -7: bmp := picture[7]; -8: bmp := picture[8]; -9: bmp := picture[9]; else bmp := picture[2]; jedenfalls würde ich das (wenn es denn unbedingt Minuszahlen sein müssen) lieber so machen:
Delphi-Quellcode:
if map[i, j] in [-1,0,-3..-9] then bmp := picture[-map[i, j]] else bmp := picture[2]; |
Re: DFM(?)- Fehler
Ich habe inzwischen festgestellt: Immer wenn ich ein neues Objekt einfüge, gibt es beim neu eingefügten Objekt Probleme. Beispiel: Ich füge eine PaintBox ein, aber jeder zeichenversuch gibt es Zugriffsverletzungen! Dan füge ich nen Button ein, die PaintBox funktioniert jetzt, aber der neue Button ist unbrauchbar. Wenn ich den wieder lösche, ist die Paintbox das zuletzt erstellte Objekt und es gibt wieder beim zeichnen Zugriffsverletzungen. :wall: :wall: :wall: :wall:
|
Re: DFM(?)- Fehler
Schonmal ein eine Delphi-Neuinstallation gedacht?
|
Re: DFM(?)- Fehler
Zitat:
|
Re: DFM(?)- Fehler
Zitat:
|
Re: DFM(?)- Fehler
Hups, ich dachte es würde alle Projekte betreffen. :oops:
Manchmal wirkt sowas aber wirklich wunder. :zwinker: Oder du hängst das Projekt mal hier an damit andere gucken können ob es bei ihnen auch zu diesem Fehlern kommt. |
Re: DFM(?)- Fehler
Woran seht ihr, dass die Installation fehlerhaft ist, wenn der Fehler nur in einem Projekt auftritt? Ich installier's trotzdem mal neu, weil vorher eine Turbo-Version installiert war. Vielleicht verträgt sich das nicht. (die turbo ist aber wieder deinstalliert.)
|
Re: DFM(?)- Fehler
Woran siehst du das es an der *.dfm liegt? :roll:
Ohne genauere Informationen wie z.B. das Projekt kann man hier ja nur spekulieren. |
Re: DFM(?)- Fehler
Zitat:
![]() Nochwas zum Projekt: Vor ca. 10 Monaten habe ich das Projekt geschrieben, ein Snake-Klon zum üben mit Canvas. Dann habe ich jetzt das Projekt wieder aus der "Versenkung" geholt und überarbeitet. (Mit Onlinehighscore und allem). Benötigte Komponenten zum Kompilieren: Indy(10) DelphiX(?) Graphics32 [obwohl ich die Komponente entfernt hatte] Achja: Der Upload über FTP ist nicht sicher, klar, aber was einfacheres gabs nicht und bei einem kostenlosen Server ist der Schaden gering. Ich hoffe das Projekt ist nicht zu durcheinander und alle Units sind drin! :drunken: |
Re: DFM(?)- Fehler
Ich hab das Projekt nochmal upgedatet. Funktioniert es mit euren Delphis?
[edit]:arrow: Habe jetzt Delphi neuinstalliert, es gibt nur Fehler beim Beenden des Projektes und wenn ich irgendwas mit der Indy-Komponente mache. Ich installiere Indy(10) mal neu[/edit] |
Re: DFM(?)- Fehler
Ich habe unter anderem mit diesem Projekt SSL- Experimente (Mit OpenSSL) gemach. Als ich jetzt einen SSL I/O-Handler (Wasimmerdasist) eingefügt habe waren alle Fehlermeldungen weg!!! (Bis auf die ganz am Ende, wegen der TBitmap- Variable). Kann man den SSL-Handler ohne Fehler entfernen?
|
Re: DFM(?)- Fehler
Hat keiner eine Idee? Funktioniert das Spiel bei euch? :wiejetzt:
|
Re: DFM(?)- Fehler
Ich kann es nicht öffnen, weil ich diverse komponenten, die benutzt wurden nicht hab. Tut mir leid :(
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz