Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#9

AW: Delayed Loaded Libraries?

  Alt 16. Dez 2016, 15:49
Neee, nicht ich meine ... Embarcadero hätte passende Fehlermeldungen werfen können, anstatt der Standardexception von Microsoft.
Selbst eine "sprechende" Fehlermeldung ohne Nennung der DLL/Function würde doch nett sein?

Hach, auch bei den Abstract-Exceptions hätte es Möglichkeiten gegeben Methodenname+Klassenname der abstrakten Methode in der Exception zu nennen.



Zumindestens in XE sind/waren die Fehlermeldungen nicht wirklich aussagefähig.
Und ich bin mir fast sicher, dass Embarcadero seit der Einführung in 2010 daran nichts mehr verändert hat.
Delphi-Quellcode:
function MessageBox2(hWnd: HWND; lpText, lpCaption: PWideChar; uType: UINT): Integer; stdcall;
  external 'user32.dllname 'MessageBoxW2' delayed;
function MessageBox3(hWnd: HWND; lpText, lpCaption: PWideChar; uType: UINT): Integer; stdcall;
  external 'blubb.dllname 'MessageBoxW' delayed;

procedure TForm4.FormCreate(Sender: TObject);
begin
  MessageBox(Self.Handle, 'Test', 'MessageBox', 0);
  try
    // normal: Der Prozedureinsprungpunkt "MessageBoxW2" wurde in der DLL "...\Project4.exe" nicht gefunden.
    // delayed: Externe Exception C0FB007F
    MessageBox2(Self.Handle, 'Test', 'MessageBox2', 0);
  except
    on E: Exception do
      ShowMessage('MessageBox2: ' + E.Message);
  end;
  try
    // normal: Das Programm kann nicht gestartet werden, da blubb.dll auf dem Computer fehlt. ...
    // delayed: Externe Exception C0FB007E
    MessageBox3(Self.Handle, 'Test', 'MessageBox3', 0);
  except
    on E: Exception do
      ShowMessage('MessageBox3: ' + E.Message);
  end;
end;
$2B or not $2B

Geändert von himitsu (16. Dez 2016 um 15:58 Uhr)
  Mit Zitat antworten Zitat