![]() |
Standalone Exe vs. IDE+F9
Hallo,
hier gleich das nächste "Feature" von Delphi 10. Ich habe ein Programm , welches zwecks Zusammenarbeit mit einer C - dll diverse Buffer reservieren muß. Starte ich das Programm aus der IDE, u.a. um zu debuggen, knallts, die Bufferlänge liegt bei ca 2^64, klar daß es dann abstürzt. Aber wer beschreibt mein Erstaunen, als ich zufällig die Exe standalone startete und alles fubnktionierte ! Natürlich habe ich sogleich eine Release-Ausgabe kompiliert und aus der IDE zu starten versucht - rumms, krach... Ist das jemandem schon mal passiert ? Ist das ein Bug oder ein Feature, muß man in den Tiefen der Projekteigenschaften das Häkchen "Debugger bitte richtig rechnen" anhaken ? Gruss ism :shock: |
AW: Standalone Exe vs. IDE+F9
Hallo,
Zitat:
Funktioniert das Programm komplett? Klappt also das Zusammenspiel mit der Dll? Oder kommt bloss keine Fehlermeldung? Ich denke, es gibt schon einen Unterschied zwischen 1. Starte Prozess separat (Exe ohne Debugger) 2. Starte Prozess als SubProzess mit Debugger-Einfluss. |
AW: Standalone Exe vs. IDE+F9
Interessant wäre auch ob das auch auftritt wenn du deine Anwendung aus der IDE heraus, aber ohne Debugger startest. Vielleicht liegt es an Dingen wie übergebenen Umgebungsvariablen?
|
AW: Standalone Exe vs. IDE+F9
Hast du auch dies versucht: Projekt > Optionen > Delphi Compiler > MSIBuild extern auf TRUE gesetzt?
Und wenn du in der IDE "wie gewohnt" debuggen willst, möchtest du eventuell auch noch Delphi Compiler > Linken > Mit externen Debug Symbolen auf TRUE setzen. |
AW: Standalone Exe vs. IDE+F9
Speicherfehler müssen nicht immer zu crashes führen.
Je nachdem wohin zufälligerweise etwas zeigt kracht es oder auch nicht. Und es ist sehr wahrscheinlich bei dir das außerhalb der IDE zufälligerweise eine Speicherbereich überschrieben wird der (nicht gleich) andersweitig benutzt wird. |
AW: Standalone Exe vs. IDE+F9
Hallo,
also: 1. Das Programm macht alles richtig . 2. Wenn ich mit Shift-Ctrl-F9 sarte funktioniert es auch Was das Programm macht wäre zu umständlich zu beschreiben, in typischer C-Manier (Manie) werden Bytefelder beschrieben. ism |
AW: Standalone Exe vs. IDE+F9
Jetzt sehe ich erst -> 2^64 Bufferlänge
Was ist das für ein Komisches Konstrukt? Gibts schon 128 Bit Compiler? Was wollte der C-Entwickler damit erreichen? |
AW: Standalone Exe vs. IDE+F9
Hallo,
klammere doch erst mal den c-Ansprech-Code aus. Versuch also, dass Programm erst mal so in der IDE zum Laufen zu bringen. |
AW: Standalone Exe vs. IDE+F9
Hallo,
natürlich läuft das Programm in der IDE, wenn ich den C-Ansprechcode auskommentiere. Aber der soll ja in einer DLL die Arbeit machen. Es geht um die WORM-DLL für die Swissbitt-TSE. Code auszugswise :
Delphi-Quellcode:
Es sieht also so aus, als ob diese Dussel-DLL meinen Delphispeicher freigibt, so daß ich ihn nicht mehr ansprechen kann.
Type TUnChar = array of Byte;
PUnChar = ^TUnchar; Var sernu : PUnChar ; new(sernu); setlength(sernu^ , 512) ; // vor dem Aufruf ist die Länge von sernu^ noch 512 worm_info_tseSerialNumber(definer.WINF, sernu , serlen); // NACH dem Aufrum ist die Länge des Feldes plötzlich Null Hoch lebe die intersprachliche Zusammenarbeit ism |
AW: Standalone Exe vs. IDE+F9
Ich bin mir ziemlich sicher, es liegt nicht an der DLL. Denn ich glaube kaum, dass du der Erste bist, der sie benutzt. Der Fehler wäre bestimmt beim Testen und bei anderen Nutzern aufgefallen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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