![]() |
Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
Moin,
ich habe mit Delphi 12 mein Projekt neu eingerichtet und übersetzt. Das Ergebnis, als die exe-Datei ist auf dem Windows 2022 - Server auf dem Delphi installiert ist, lauf und Debug fähig. Das Ergebnis in meine Programmumgebung unter Windows 10 gegben, also Tausch des Exes in einem Install geht. Das Ergebnis in meine Programmumgebunt unter Windows 2022 gegeben, geht nicht. maxExcept offenbart mir, dass er die Klasse einer Kompponente beim Laden es TDataModules nicht findet. Aber welche und warum? (Wie gesagt das gleiche Exe unter Window 10 tut.) Können da Spracheinstellungen eine Rolle spielen? Jeder Hinweis/Idee ist willkommen. Danke. |
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
die Fehlermeldung wäre toll. Evtl. mit Laufzeitpackages kompiliert?
|
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
Auch ohne madExcept zeigt Delphi sowas (eigentlich) an, inkl. Name der Klasse, falls die Fehlerbeschreibung wirklich dem entspricht, was hier schwammig geschrieben steht.
Man mag es nicht glauben, aber Strg+C funktioniert bei den meisten Fehlerdialogen. und dann hier in ein [QUOTE] rein. :stupid: Eigentlich alle Gründe, warum eine Delphi-Klasse beim DFM-Laden nicht gefunden wird, ist unveränderlich, also unabhäng davon, wo die EXE ausgeführt wird, da normal ALLES einkompiliert ist. * Komponente in Unit gelöscht oder in andere verschoben * letzte Komponentenvariable aus Form-Klasse gelöscht, wo aber immernoch die Komponente in der DFM liegt. Vielleicht stattdessen irgendwas mit ActiveX oder so? Der Linker nimmt DFMs in die EXE auf, ohne zu prüfen, was drin ist ... wenn seit ewig eine Unit nicht mehr im Delphi geöffnet wurde, dann fällt vor dem Kompilieren nicht auf, wenn da inzwischen irgendwas in der PAS geändert wurde. |
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
Sorry Jungs, ich mache das schon eine ganze Weile, ich Frage hier eher aus Verzweifelung.
* Wenn die Fehlermeldung einen Klassennamen ausgeben würde, müsste ich nicht fragen, oder würde ihn posten. * Das Exe funktioniert auf dem Windows 2022 wo das Delphi ist. Es funktioniert auf einem Windows 10. * Auf einem relativ Blanken Windows 2022 funktioniert es nicht. * Ich vermute, daher eine falsche oder fehlende DLL oder sowas. Aber auch das ist nicht Teil der Fehlermeldung, sonst würde ich das Problem verstehen, oder genauer posten. Vielleicht hat noch jemand eine Idee, sonst werde ich berichten, was für ein (depperter) Fehler es war. |
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
Wo ich TDataModule lese: evtl. ein DB-Treiber nicht installiert?
|
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
Entweder es startet einfach nicht oder ist ohne Fehlermeldung plötzlich weg,
aber sonst gibt es doch eine Fehlermeldung, welcher immernoch nicht genannt wurde. Bei Ersterem schaut man im Windows in Ereignisanzeige > Windows-Protokolle > Anwendung > nach seinem Programm, sowie nach Meldungen vom WER (Windows-Error-Reporting) oder Virenscanner usw. Zitat:
![]() Und dann gibt es noch Dinge, wie z.B. das Remote-Debugging. |
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
Zitat:
|
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Und ja mir ist klar Er kann das zum IBData zugehörige DFM nicht laden. Er zeigt aber die Klasse nicht. Auf dem DFM sind FireDac Komponenten, die fbclient.dll findet er aber ansonsten auf der fehlerhaften Maschine und auf anderen Maschinen geht das exe Hier noch das .dfm
Delphi-Quellcode:
Cheers
object DMMain: TDMMain
Height = 201 Width = 383 object FDFIBConn: TFDConnection ConnectionName = 'ACONNECTION' Params.Strings = ( 'DriverID=FB' 'User_Name=user' 'Password=password' 'Database=' 'SQLDialect=1' 'CharacterSet=ISO8859_1' 'CharLenMode=Chars' 'Protocol=Local' 'ExtendedMetadata=False' 'OpenMode=Open') UpdateOptions.AssignedValues = [uvCheckRequired] UpdateOptions.CheckRequired = False Transaction = FDTransaction AfterDisconnect = DMDatabaseAfterDisconnect Left = 120 Top = 24 end object FDTransaction: TFDTransaction Options.Isolation = xiReadCommitted Connection = FDFIBConn AfterStartTransaction = FDTransactionAfterStartTransaction AfterCommit = FDTransactionAfterCommit AfterRollback = FDTransactionAfterRollback Left = 208 Top = 24 end object FDFIBLocalProc: TFDStoredProc Connection = FDFIBConn Transaction = FDTransaction Left = 176 Top = 80 end object FDLocalQuery: TFDQuery Connection = FDFIBConn Transaction = FDTransaction FormatOptions.AssignedValues = [fvStrsTrim] Left = 104 Top = 128 end object FBDriverLink: TFDPhysFBDriverLink DriverID = 'FB259' VendorLib = 'fbclient.dll' Embedded = True Left = 40 Top = 24 end object IBSecureService: TFDIBSecurity DriverLink = FBDriverLink Left = 304 Top = 24 end end |
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
Ergänzung.
Ich habe den FBSecureService rausgenommen, und bekommen ein anderes Fehlerbild. Ich habe immer mehr den Eindruch es ist ein Zugriff auf ein uninitilisierte Variabel, die nur in dem Kontext wird. Mal sehen. Die Ereignismeldung ist Name der fehlerhaften Anwendung: apv4.exe, Version: 4.6.8.441, Zeitstempel: 0x66dac417 Name des fehlerhaften Moduls: apv4.exe, Version: 4.6.8.441, Zeitstempel: 0x66dac417 Ausnahmecode: 0xc0000005 Fehleroffset: 0x00e130cd ID des fehlerhaften Prozesses: 0xdf4 Startzeit der fehlerhaften Anwendung: 0x01db003b88334b55 Pfad der fehlerhaften Anwendung: E:\Autopoll_V45_441\apv4.exe Pfad des fehlerhaften Moduls: E:\Autopoll_V45_441\apv4.exe Berichtskennung: f0554075-8869-4f2f-91b0-2e2833acb708 Vollständiger Name des fehlerhaften Pakets: Anwendungs-ID, die relativ zum fehlerhaften Paket ist: Falls das jemanden was sagt. |
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
In Delphi 7 würd' ich mal das Programm im Debugger starten, einen Breakpoint irgendwo am Anfang setzen und dann über Suchen / Laufzeitfehler suchen... nach der Fehleradresse forschen. Eventuell kommst Du damit ja in die Nähe des tatsächlichen Problemes.
Oder die Exe mit MAP-Datei erstellen und in der dann nach der Fehleradresse suchen. Da kann man dann ggfls. auch erkennen, in welchem Bereich des Programmes der Fehler auftritt und dort dann gezielt weitersuchen. Wie's genau in Deinem Delphi geht, weiß ich nicht. |
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
Zitat:
Aber warum es auf dem einen PC scheppert und auf dem anderen nicht, das erschließt sich mir leider gar nicht. |
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
Zitat:
|
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
I think can't find component is misleading error message and simply hide the real error.
I suggest to build a new and an empty project and start to add these component (you listed in DFM) one by one, BUT do the following: 1) try add them at design time, might be caught the culprit. 2) Create them at runtime and get the real exception, the one that TReader had eat. In case that fail too, or may be as different approach, use DDetours ![]() |
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
After thinking, may be the shortest way to to hook RegisterClass and log into a file, by comparing the result between 2 OSs you will find the failed one.
|
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
Zitat:
|
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
Zitat:
|
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
Du könntest versuchen, die Komponenten auf dem Datenmodul manuell zu erstellen. Dann solltest du besser sehen, welche Komponente das Problem verursacht.
|
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
Zitat:
What i think of is : RegisterClass being called conditionally and these condition weren't met on that OS, hence that skipped register caused the absence of the TComponent or TClass ... exception. This could be buggy code, outdated, a fix was applied only in one place... etc. Catching it red-handed will be clearer and simpler, or may be just search for conditionally called RegisterClass in these DB units might do. |
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
On my XE8, an empty VCL project does in fact call RegisterClass only once for TMenuItem, so OutputDebugString might be enough as the list might be short.
Here is a full hooking unit
Delphi-Quellcode:
lcHookRegisterClass should be the first in in the uses clauses in the dpr file, or the second if there is Memory Manger unit is used, something like this
unit lcHookRegisterClass;
interface uses Classes, Windows, DDetours; //procedure InstallHook; type TRegisterClassProc = procedure(AClass: TPersistentClass); var TrampolineRegisterClass: TRegisterClassProc; implementation procedure InterceptRegisterClass(AClass: TPersistentClass); begin TrampolineRegisterClass(AClass); // call the original to register, we don't break the application // AClass.ClassName to log , file or OutputDebugString ... OutputDebugString(PChar(AClass.ClassName)); // OutputDebugString need Windows in uses clause end; procedure InstallHook; begin // Classes.RegisterClass , we use full name and path to the proc if possible to prevent confusion as there is Windows API as RegisterClass if not Assigned(TrampolineRegisterClass) then TrampolineRegisterClass := InterceptCreate(@Classes.RegisterClass, @InterceptRegisterClass); end; initialization InstallHook; finalization if Assigned(TrampolineRegisterClass) then InterceptRemove(@TrampolineRegisterClass); end.
Delphi-Quellcode:
program Project10;
uses lcHookRegisterClass in 'lcHookRegisterClass.pas', Vcl.Forms, uMain in 'uMain.pas' {Form10}; {$R *.res} begin Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TForm10, Form10); Application.Run; end. |
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
Zitat:
You only have to switch the components one by one or in groups from designtime to runtime. This way you can easily find the component, which is causing the error. |
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
Ist deine Anwendung 64 Bit? Wenn ja würde ich eine Wette eingehen, dass du ein Pointer-Problem hast.
Deaktiviere zur Probe einmal mindesten HE-ASLR oder ASLR gleich ganz und probiere es nochmal aus. |
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
ASLR wird von madexcept seit 5.1.3 unterstützt. Vielleicht eine alte Version?
|
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
Zitat:
|
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
Auch auf die Gefahr hin mich unbeliebt zu machen ....
Zumal der zweite Server eher 'nackt' ist, wurde die passende Visual C/C++ Runtime in 32bit und/oder 64bit installiert? In einem in MS C/C++ erstellten und damit kompilierten Programm schmiert das Programm in der Regel sang- und klanglos ab. Wenn DLLs geladen werden, dann, sofern es am FireDAC liegt, würde ich einmal an dem Eck suchen. Ich war zwar ab dem ersten Moment als der FireDAC noch Dent in Version 0.6x hieß dabei, aber mit der 'logischen' DriverID der Driver Link Komponente habe ich mich noch nie intensiv gespielt. Die zeigt bei dir bei der Connection auf die Basis DriverID und in besagter Komponente verweist sie auf einen 2.5er Firebird, sofern ich die Einstellen richtig rate. Ich bekäme mit der Config vermutlich ein Connection rejected by remote interface. Zitat:
|
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
Danke an alle die versucht haben zu helfen!
Es war natürlich komplet dämlich. In dem Verzeichnis lungerte noch eine steinalte Ressource-Datei <program>.EN rum, die er obwohl alles auf Deutsch ist, in dem WS2022 welches auf einer englischen Installaiton fußt, die dt, ist buggy, griff. Damit hat er aus dem altem Multilizer, den ich nicht mehr einsetzee, irgendwelchen katastrophalen Kram geladen. Ist ja nichtso, das wir den Bug schon kannten. Nun denn. cu. |
AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
Wie gesagt, eine saubere VM oder einfach nur die Sandbox (extremst abgespeckte Minimalvariante des installierten Windows) sind immer gut, um Abhängigkeiten zu testen.
![]() Sowie im Hyper-V gibt es auch direkt eine Auswahl von Vorinstallierten, beim Hinzufügen einer neuen VM. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:14 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