Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Zugriffsverletzung in Modul 'designide70.bpl' (https://www.delphipraxis.net/205524-zugriffsverletzung-modul-designide70-bpl.html)

Delfiano 20. Sep 2020 06:15

Zugriffsverletzung in Modul 'designide70.bpl'
 
Ich habe ein Problem mit visuellen Eigenkomponenten, die auf die Units DesignEditors und DesignIntf angewiesen sind. Mit Delphi 5 funktionierte noch alles, aber wenn ich bei Delphi 7 versehentlich im Editor auf die jeweilige Komponente klicke, kommt die Fehlermeldung Zugriffsverletzung bei Adresse xxx in Modul 'designide70.bpl' Lesen von Adresse 00000000 und Delphi 7 hängt. Man kann es nur noch über den Taskmanager beenden.

Ich vermute einen Zusammenhang mit der nicht vorhandenen Originalunit Proxies für die ich diesen Ersatz benutze
Delphi-Quellcode:
unit Proxies;

interface

uses
Classes;

{ if Delphi6.0 then TComponentClass }

function IsProxyClass(ComponentClass: TClass): Boolean;

implementation

function IsProxyClass(ComponentClass: TClass): Boolean;
begin
Result := False;
end;

end.
Wenn der in der BPL benutzte Originalsource nicht mit dem Ersatz übereinstimmt, kommt es immer zu Problemen. Ich hab das früher schon mal gemerkt, hatte aber nun mehrere Jahre nicht mehr mit Delphi programmiert und weiss im Moment nicht weiter. Für die designide70.bpl (und andere) existiert kein Source.

Kann mir irgendjemand einen Rat geben?

himitsu 20. Sep 2020 06:43

AW: Zugriffsverletzung in Modul 'designide70.bpl'
 
Nimm die IDE, starte damit eine zweite Instanz im Debugger
Menü > Start > Prozess laden / oder Prozess verbinden (ich glaub das hieß damals, in diesem uralten Delphi, auch schon so)
bei einer eigenen Komponente, bzw. bei welchen mit Quellcode
Menü > Start > Parameter und dort die Delphi.exe (neuer bds.exe) als Host, für das zu debuggende Komponenten-Package.

Dann in der zweiten Instanz auf die Komponente klicken
und schauen was der Debugger (der ersten Instanz) im Stacktrace ausgibt.


https://www.embarcadero.com/de/products/delphi/starter



[edit]
OK, den Fehler hat Bernhard nun gefunden.

Dennoch ist "Zugriffsverletzung bei Adresse xxx in Modul 'designide70.bpl' Lesen von Adresse 00000000" die letzte Stelle wo es knallt, aber nicht von wo der Fehler kommt.
Darum kann/sollte man Fehlersuche hier genaus machen, wie in einem "normalen" Programm, denn auch die IDE ist nur ein Programm.

Und dann versuchen über die von Bernhard erwähnten Quellen das Problem zu beseitigen.

PS: Eine eigene Komponente oder eine Fremde?
Bei Letzteres wäre es bestimmt einfacherer etwas Neueres oder Ähnliches zu suchen.

Bernhard Geyer 20. Sep 2020 11:05

AW: Zugriffsverletzung in Modul 'designide70.bpl'
 
proxies.pas. Mmhhhh. Da war doch was.

Du musst deine Komponenten umschreiben um den Runtime von dem IDE-Teil zu trennen

https://edn.embarcadero.com/article/27717

Ansonsten suche nach "proxies pas delphi 7". Dort gibt es noch zig andere Beiträge (u.a. auch hier auf der Delphi-Praxis), welche sich mit der Änderung zwischen den beiden antiken Versionen D5 -> D6 ergeben hatte.

Delfiano 20. Sep 2020 13:26

AW: Zugriffsverletzung in Modul 'designide70.bpl'
 
Danke erstmal für eure Antworten.

Natürlich hatte ich vorher schon ausführlich bzgl. Proxies gesucht und habe auch den von mir ersatzweise benutzten Quelltext daher.

Was embarcadero angeht, so kann ich nicht genug englisch, um das alles zu verstehen.

Eine zweite Instanz i m Debugger starten, verstehe ich jetzt leider auch nicht. Ich habe wirklich sehr lange nichts mehr mit Delphi gemacht, weiss nur, dass ich gerne den integrierter Debugger komplett abschalten würde, weil er mir die Fehlersuche eher erschwert statt erleichtert.

Zu den Komponenten selbst: Es handelt sich um Eigenkomponenten, die ich aus Quellen für TPW erstellt habe. Leider war mir TPW immer zu kompliziert, so dass ich wahrscheinlich vieles nicht korrekt konvertieren konnte. Allerdings gab es wie erwähnt mit Delphi 5 keine funkionellen Probleme.

Ich will euch auch nicht vorenthalten, um was es geht.

Woher ich das TPW-Programm damals hatte, weiss ich nicht mehr. Es handelt sich um MIDIPlay von einem Peter Horn (Dezember 1994) der als Quelle das C-Programm DRUM aus dem Jahr 1992 von Charles Petzold heranzog.

Trotz sehr intensiver Suche über mehrere Wochen habe ich keinerlei Aktualisierungen gefunden und auch keine brauchbaren Quellen eines anderen simplen Drumsequenzers.

Aber okay, der Absturz in der IDE ist die letzte Stufe. Also werde ich damit beginnen, die Komponenten zu entschlacken und aufzusplitten.

Danke nochmal für eure Mühe.

Delphi.Narium 20. Sep 2020 13:49

AW: Zugriffsverletzung in Modul 'designide70.bpl'
 
Schau mal bitte in den Quelltext Deiner Komponente.

Unter Uses findest du (vermutlich) eine
Delphi-Quellcode:
DsgnIntf
Wenn dem so ist, ersetzt Du bitte diese durch
Delphi-Quellcode:
DesignIntf, DesignEditors
.

Meist reicht das schon.

Delfiano 22. Sep 2020 03:12

AW: Zugriffsverletzung in Modul 'designide70.bpl'
 
Liste der Anhänge anzeigen (Anzahl: 1)
Danke, aber das ist es leider nicht.

Vielleicht muss ich noch etwas weiter ausholen:

Wie schon erwähnt, entstammt das ursprüngliche Programm einer Konvertierung von C nach TPW durch einen Peter Horn.

Meine erste Konvertierung zu Delphi erfolgte sogar noch für Delphi 1, womit dann aber manches nicht realisierbar war. Zuerst hatte ich das ohne Komponente, aber ich fand es lästig, wenn alles erst dynamisch zur Laufzeit erzeugt wurde.

Bei der Umsetzung klappte auch alles soweit mit Delphi 5, aber als ich dann das eigentiche Programm unter Delphi 7 starten wollte, fiel auf, dass es "typisierte Konstanten" enthielt. Anscheinend sind auch in der Komponentenunit noch welche, aber dann hätte die eigentlich unter Delphi 7 garnicht compiliert werden dürfen.

Ich häng hier erstmal nur die Originalquellen (C und TPW) als ZIP-Datei an, falls sich jemand dafür interessiert.

Mir schwebt vor, dass man daraus vielleicht ein Gemeinschaftprojekt machen könnte. Aber bevor ich meine Manipulationen für Delphi auch noch vorstelle, will ich erstmal weiter selbst nach Fehlern suchen.

TurboMagic 22. Sep 2020 19:51

AW: Zugriffsverletzung in Modul 'designide70.bpl'
 
Typisieren Konstanten gehen auch in neueren Delphi Versionen, wenn man den richtigen Compilerschalter setzt. Ich glaube J+ war das...

himitsu 22. Sep 2020 20:22

AW: Zugriffsverletzung in Modul 'designide70.bpl'
 
Typisierte Konstanten gehen immer.

Beschreibbare typisierte Konstanten sind da was Anderes, aber das nennt sich sowieso "Variable". :roll:
Delphi-Quellcode:
{$J-} aka {$WRITEABLECONST OFF} ist der Standard

Delfiano 22. Sep 2020 20:47

AW: Zugriffsverletzung in Modul 'designide70.bpl'
 
Oh, das wusste ich gar nicht. Danke für den Hinweis. Ich hab einfach viel zu lange nichts mehr mit Delphi gemacht. Die Probleme liegen tatsächlich tiefer.

Darum hab ich nochmal komplett neu begonnen, alle TPW-Units einzeln durchzusehen und versucht, sie zu Delphi zu konvertieren. Die Hauptprobleme, an denen ich scheitere, sind z.B. das dynamische Erzeugen eines Formulars und eines Timers.

Wie ich z.B. aus
Delphi-Quellcode:
  PDRUMWindow = ^TDRUMWindow;
  TDRUMWindow = Object (TWindow)

                    {DatenFelder}
                    Vertical, Horizontal : PScrollbar;

                    {Methods}
                    CONSTRUCTOR Init (AParent: PWindowsObject;
                    zTitel: PChar);
usw. Delphicode erzeuge.

Wahrscheinlich werde ich ein neues Thema aufmachen oder suchen, ob es das schon gibt, nämlich Konvertierung von TPW/BPW zu Delphi.

Wie schon von anderer Seite korrekt festgestellt wurde, ist der Absturz der IDE beim Anklicken der Komponente nur der letzte Schritt und die Fehlerquellen sitzen tiefer - völlig ungeachtet dessen, dass alles funktioniert, wenn man eben nicht versehentlich im Formular auf die Komponente klickt. Denn im Objektinspektor lässt sich alles wie gewünscht einstellen.

Aber ehe ich hier andere anrege, Lösungen für allein mein Problem zu suchen, will ich mich erstmal weiter rantasten und mache dann zur gegebenen Zeit ein neues Thema dazu auf.

Nochmal meinen Dank an alle, die sich bisher hierzu gemeldet haben.

KodeZwerg 23. Sep 2020 08:41

AW: Zugriffsverletzung in Modul 'designide70.bpl'
 
Ich habe gestern mal probiert dieses Borland Pascal für Windows Projekt "Drums" in die jetzt-Zeit zu befördern.
Es tut mir leid einzugestehen, mir war es nicht möglich.
Den verwendeten Code (von 1994) kann ich zwar gut lesen aber die verwendeten Methoden (alles basiert auf 16bit?) lassen sich nicht so ohne weiteres nachbauen.
Spätestens wenn man versucht die Resourcen-Datei einzubinden komme ich nicht weiter.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:35 Uhr.
Seite 1 von 2  1 2   

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