![]() |
AW: Fehler "access violation" - keine Ahnung, warum...
Das hättest Du aber auch ein bisschen früher sagen können. Habe ich die Situation richtig verstanden:
- größerer Record -> Programm läuft, Hardware stürzt ab - kleinerer Record -> Programm stürzt ab :?: |
AW: Fehler "access violation" - keine Ahnung, warum...
Dann erstelle zwei records und vergleiche auf die Firmware ..
Einen Record in der reihenfolge zu ändern bzw.. zu kürzen ist keine gute Idee Mach das mal bei meiner DLL dann geht auch nichts mehr. Ist aber auch logisch oder? Das hat mich auch gewundert "NativeUInt" = HRESULT in C++
Delphi-Quellcode:
aber jeder so wie er will.
if COM_TcpOpen(zeiger, ipAddress, port) = S_OK then
begin ... end EDIT: Sorry: Diese art der Programmierung ist auch unverständlich.
Delphi-Quellcode:
Du definierst eine Variable return und tust nichts damit
procedure TForm1.btnstartmanipulationClick(Sender: TObject);
begin return := COM_RbsManipulationReq(zeiger, tagmanipulation); return := COM_StartRbsManipulationReq(zeiger); end; Irgendwo seltsam das ganze. gruss |
AW: Fehler "access violation" - keine Ahnung, warum...
Zunächst einmal scheint hier ein Mißverständnis über Zeiger/Pointer vor zu liegen.
Ein Zeiger/Pointer enthält NIL oder eine Adresse, die auf einen Speicherbereich zeigt. Der Wert, den der Zeiger enthält, ist vollkommen uninteressant. Von Interesse ist nur der Speicherbereich auf den der Zeiger zeigt. Wenn hier ein paarmal vom Inhalt des Zeigers die Rede war hoffe ich, daß dies eine sprachliche Ungenauigkeit war. Wie DeddyH schon ausgeführt hat ist
Delphi-Quellcode:
vornehm ausgedrückt, Blödsinn. zeiger : pointer; ... new(zeiger);
Delphi-Quellcode:
ist nur dann sinnvoll, wenn zeiger als Pointer auf irgendetwas definiert ist. z.B.
new(zeiger);
Delphi-Quellcode:
Dann beginnt die Record Definition mit zwei Byte-Werten.
tmyrec=record
wert:integer; nix :byte; end; zeiger:^tmyrec; pint :înteger; ... new(zeiger); new(pint); Das könnte nach einem
Delphi-Quellcode:
verlangen, muß aber nicht. Wäre u.U. aber auch eine Erklärung für das Verhalten.
packed record
Gruß K-H |
AW: Fehler "access violation" - keine Ahnung, warum...
Zitat:
Bei dem kleineren Record funktioniert die Werteübergabe an die Hardware (und die Hardware setzt den Befehl korrekt um), aber mein Delphi Programm bringt den Fehler. |
AW: Fehler "access violation" - keine Ahnung, warum...
Man könnte da jetzt wild herumwuseln (das Schlüsselwort absolute kommt mir da in den Sinn). Aber an Deiner Stelle würde ich zunächst beim Hersteller nachfragen, ob es eine an die neue Firmware angepasste DLL gibt. Anschließend die Firmware-Version erfragen und je nachdem die eine oder andere DLL laden und mit dem passenden Record ansprechen. Das scheint mir noch das Einfachste zu sein.
|
AW: Fehler "access violation" - keine Ahnung, warum...
Zitat:
Nun kommt kein Fehler mehr! Da wäre ich im Leben nicht drauf gekommen. Danke für eure Hilfe! Ihr seid echt mal fit in Delphi! |
AW: Fehler "access violation" - keine Ahnung, warum...
In C-Sprachen und in den Delphi-BPLs wird im Exportnamen von Funktionen/Prozeduren auch gerne mal die Parameterdeklaration mit aufgenommen.
Bei Delphi-DLLs (wenn man nicht explizit ws nderes angibt) und bei vielen WinAPIs enspricht aber der Exportname dem Prozedurnamen. Zitat:
Da hätte es doch schon auffallen sollen, daß die Prozedur, unter dem alten Namen, nicht gefunden wird. :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 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