Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Windows 2022 Server, mit Delphi erstelltes exe hat Fehler (https://www.delphipraxis.net/215778-windows-2022-server-mit-delphi-erstelltes-exe-hat-fehler.html)

AndreasAutopoll 5. Sep 2024 16:12

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.

Lemmy 5. Sep 2024 18:37

AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
 
die Fehlermeldung wäre toll. Evtl. mit Laufzeitpackages kompiliert?

himitsu 5. Sep 2024 19:23

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.

AndreasAutopoll 6. Sep 2024 09:19

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.

DeddyH 6. Sep 2024 09:29

AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
 
Wo ich TDataModule lese: evtl. ein DB-Treiber nicht installiert?

himitsu 6. Sep 2024 09:38

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:

Zitat von AndreasAutopoll (Beitrag 1540626)
* Auf einem relativ Blanken Windows

https://www.delphipraxis.net/207151-...s-sandbox.html

Und dann gibt es noch Dinge, wie z.B. das Remote-Debugging.

AndreasAutopoll 6. Sep 2024 09:42

AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
 
Zitat:

Zitat von DeddyH (Beitrag 1540628)
Wo ich TDataModule lese: evtl. ein DB-Treiber nicht installiert?

Isz auch meine Vermutung, aber ältere Versionen finden auf dem WS 2022 die Datenbank (Firebird) und direkter Datenbank Zugriff geht auch.....

AndreasAutopoll 6. Sep 2024 09:55

AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von himitsu (Beitrag 1540629)
aber sonst gibt es doch eine Fehlermeldung, welcher immernoch nicht genannt wurde.

Wenn Du meinst das es der Wahrheitsfindung dient, vgl Anhang.

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:
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
Cheers

AndreasAutopoll 6. Sep 2024 10:05

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.

Delphi.Narium 6. Sep 2024 10:15

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.

AndreasAutopoll 6. Sep 2024 10:18

AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
 
Zitat:

Zitat von Delphi.Narium (Beitrag 1540635)
nach der Fehleradresse suchen

Ich kenne die Programmzeile / stelle in der es scheppert.

Aber warum es auf dem einen PC scheppert und auf dem anderen nicht, das erschließt sich mir leider gar nicht.

freimatz 6. Sep 2024 10:18

AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
 
Zitat:

Zitat von AndreasAutopoll (Beitrag 1540608)
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.

Sorry, aber ich verstehe diese Sätze nicht.

Kas Ob. 6. Sep 2024 10:22

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 https://github.com/MahdiSafsafi/DDetours on that offending TReader.FindComponentClass and capture the missing/failed class to register at runtime, because this is what is happening, some class/component should have registered itself at runtime in initialize clause (in a unit) but failed and didn't register, this left the DFM reader/builder/creator in the dark.

Kas Ob. 6. Sep 2024 10:28

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.

AndreasAutopoll 6. Sep 2024 10:34

AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
 
Zitat:

Zitat von Kas Ob. (Beitrag 1540639)
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.

Goot idea, thanks. We will see.....

AndreasAutopoll 6. Sep 2024 10:35

AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
 
Zitat:

Zitat von freimatz (Beitrag 1540637)
Sorry, aber ich verstehe diese Sätze nicht.

Ein unf dasselebe exe File läuft auf zwei Rechnern, aber nicht auf einem dritten und alle sind ähnlich und für mich aucsreichend gleich installiert. Aber irgendein Detail geht schief.

jaenicke 6. Sep 2024 11:52

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.

Kas Ob. 6. Sep 2024 12:17

AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
 
Zitat:

Zitat von jaenicke (Beitrag 1540644)
Du könntest versuchen, die Komponenten auf dem Datenmodul manuell zu erstellen. Dann solltest du besser sehen, welche Komponente das Problem verursacht.

Will not work always, or better to say, might not catch the reason, on the contrary will work fine without a problem, as you don't always need to RegisterClass to use it or create it at runtime.

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.

Kas Ob. 6. Sep 2024 12:29

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:
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.
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
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.

jaenicke 6. Sep 2024 19:44

AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
 
Zitat:

Zitat von Kas Ob. (Beitrag 1540645)
Will not work always, or better to say, might not catch the reason, on the contrary will work fine without a problem, as you don't always need to RegisterClass to use it or create it at runtime.

This might well be the case. But in this case the solution is very simple:
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.

omnibrain 6. Sep 2024 21:13

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.

freimatz 7. Sep 2024 06:34

AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
 
ASLR wird von madexcept seit 5.1.3 unterstützt. Vielleicht eine alte Version?

Kas Ob. 7. Sep 2024 07:52

AW: Windows 2022 Server, mit Delphi erstelltes exe hat Fehler
 
Zitat:

Zitat von jaenicke (Beitrag 1540660)
Zitat:

Zitat von Kas Ob. (Beitrag 1540645)
Will not work always, or better to say, might not catch the reason, on the contrary will work fine without a problem, as you don't always need to RegisterClass to use it or create it at runtime.

This might well be the case. But in this case the solution is very simple:
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.

You are you there :thumb: , i missed this idea, still hooking is faster and less code, in case OP is lazy like me.

MichaelT 7. Sep 2024 17:52

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:

Zitat von AndreasAutopoll (Beitrag 1540608)
Moin,

Jeder Hinweis/Idee ist willkommen.

Danke.


AndreasAutopoll 9. Sep 2024 12:47

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.

himitsu 9. Sep 2024 13:54

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.

https://developer.microsoft.com/de-d...tual-machines/
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