AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delayed Loaded Libraries?

Ein Thema von himitsu · begonnen am 16. Nov 2012 · letzter Beitrag vom 16. Dez 2016
Antwort Antwort
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#1

AW: Delayed Loaded Libraries?

  Alt 16. Dez 2016, 13:38
@Himitsu, bei dem einen Link fehlte was, nämlich die Klammer zu.

Embarcadero hat dabei direkt den Loading-Code von Microsoft als OBJ eingebunden. Schade eigentlich, denn so schlimm/aufwändig ist der nicht und man hätte da auch direkt eine "bessere" Fehlerbehandlung implementieren können, inkl. Anzeige der aufgerufenen Funktion, bei welcher es knallt.
Also laut deinen Links ist das doch ziemlich vollständig, inwieweit kannst du denn deine Fehlerbehandlung nicht umsetzen?
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

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;
Ein Therapeut entspricht 1024 Gigapeut.

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

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

AW: Delayed Loaded Libraries?

  Alt 16. Dez 2016, 16:56
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.
Es gibt aber einen ganz netten Workaround:
http://www.drbob42.com/examines/examinc1.htm (der letzte Abschnitt)
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:26 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 by Thomas Breitkreuz