![]() |
AW: Rar Dll
Das mit dem Code-Tag habe ich aber nicht verstanden, wo muss das hin.
Und jetzt an alle: Entschuldigung wegen dem push |
AW: Rar Dll
Was ist daran so schwer zu vwestehen einen passenden Tag zu verwenden: für Delphi/Pascal-Code den Delphi-Tag, für SQL.Code den SQL.Tag, für C-Code den C-Tag usw.
|
AW: Rar Dll
Achso, ich dachte ihr meint das "Codische", und nicht das Optische.
Aber was ist denn jetzt mit den @? |
AW: Rar Dll
Habe mal des weiter oben angegebene Demo nach Lazarus übersetzt.
Da das Beispiel niemanden interessiert -> entfernt. |
AW: Rar Dll
krass, ich glaub ich hatte mein Lazarus gerade zum ersten mal dieses Jahr wieder verwendet :stupid:
joar, im objfpc-Mode hat Lazarus, bzw. der FPC irgendein (krankes) Problem mit Funktionszeigern (den ganzen hier benötigten @-Geschichten) ... kein Wunder daß der Code, für mich als Delphianer irgendwie korrekt aussah und eigentlich funktionieren hätte müssen. tausch mal das
Delphi-Quellcode:
gegen
{$mode objfpc}{$H+}
Delphi-Quellcode:
.
{$mode delphi}
(mit der delphikompatiblen Syntax scheint es jedenfalls zu funktionieren) ansonsten ... nja, k.A. wie man solche Sachen sonst in der "normalen" FPC-Syntax angeben muß ... entweder kann/kennt FPC sowas nicht oder die haben irgendeine andere (kranke) Syntax dafür. [edit] ![]() ![]() hier ist auch ein Beispiel mit enthalten ![]() PS: im Lazarus-Wiki/-Forum findet man zu solchen lazarus-, bzw. fpc-spezifischen Problemem bestimmt öfters mal eine Lösung :wink: [edit2]
Delphi-Quellcode:
einen leeren Try-Except-Block macht man einfach nicht :warn:
function RARDllGetVersion: integer;
begin if @RARGetDllVersion = nil then Result:= 0; else Result := RARGetDllVersion() // der (leere) Parameter "()" markiert es als Funktionsaufruf // sowas muß z.B. auch in den meißten C-#hnlichen Sprachen // gemacht werden, wobei "Delphi" soetwas aber automatisch erkennt end; function UnrarDllLoad(const dllfilename : string) : Boolean; begin Result := False; UnrarDllHandle := LoadLibrary(PChar(dllfilename)); if UnrarDllHandle <> 0 then begin RAROpenArchive := TRAROpenArchive (GetProcAddress(UnrarDllHandle, 'RAROpenArchive')); RAROpenArchiveEx := TRAROpenARchiveEx(GetProcAddress(UnrarDllHandle, 'RAROpenArchiveEx')); RARCloseArchive := TRARCloseArchive (GetProcAddress(UnrarDllHandle, 'RARCloseArchive')); RARReadHeader := TRARReadHeader (GetProcAddress(UnrarDllHandle, 'RARReadHeader')); RARReadHeaderEx := TRARReadHeaderEx (GetProcAddress(UnrarDllHandle, 'RARReadHeaderEx')); RARProcessFile := TRARProcessFile (GetProcAddress(UnrarDllHandle, 'RARProcessFile')); RARSetCallback := TRARSetCallback (GetProcAddress(UnrarDllHandle, 'RARSetCallback')); RARSetPassword := TRARSetPassword (GetProcAddress(UnrarDllHandle, 'RARSetPassword')); RARGetDllVersion := TRARGetDllVersion(GetProcAddress(UnrarDllHandle, 'RARGetDllVersion')); if (@RAROpenArchive = nil) or (@RARCloseArchive = nil) or (@RARReadHeader = nil) or (@RARProcessFile = nil) or (@RARSetPassword = nil) or (@RARSetCallback = nil) or (@RAROpenArchiveEx = nil) or (@RARReadHeaderEx = nil) then FreeLibrary(UnrarDllHandle) else Result := True; end; end; entweder man behandelt einen Fehler oder man läßt ihn zu. Fehler einfach so zu unterdrücken gibt's nicht, denn so bekommt man ja nie mit, ob und warum etwas "nicht" passiert. Und Assigned kann auch manchmal nett sein:
Delphi-Quellcode:
function RARDllGetVersion: integer;
begin if Assigned(RARGetDllVersion) then Result := RARGetDllVersion() else Result:= 0; end; function UnrarDllLoad(const dllfilename : string) : Boolean; begin ... if Assigned(RAROpenArchive) and Assigned(RARCloseArchive) and Assigned(RARReadHeader) and Assigned(RARProcessFile) and Assigned(RARSetPassword) and Assigned(RARSetCallback) and Assigned(RAROpenArchiveEx) and Assigned(RARReadHeaderEx) then Result := True else FreeLibrary(UnrarDllHandle); end; end; |
AW: Rar Dll
Danke:-d:-d:-d:-d:-d
|
AW: Rar Dll
Zitat:
Er verzeiht nur nicht soviel. ;) Aber ja, wenn man von Delphi kommt, sind viele Dinge erstmal nervig. Auf der anderen Seite macht man sich dann auch endlich mal Gedanken um seinen Code. ;) |
AW: Rar Dll
Also das ist schon etwas nervig ...
Delphi-Quellcode:
wer soll denn bei solchen Fehlermeldungen ....
RAROpenArchive := GetProcAddress(UnrarDllHandle, 'RAROpenArchive');
Zitat:
Delphi-Quellcode:
Aber OK, hatte es ja auch nicht so "böse" gemeint. :angel:
RAROpenArchive := TRAROpenArchive(GetProcAddress(UnrarDllHandle, 'RAROpenArchive'));
|
AW: Rar Dll
Ja, darüber bin ich damals natürlich auch gestolpert. Ist schon nervig, aber wenn mans weiß - na ja, man kann damit leben.
|
AW: Rar Dll
Danke, Omata
Nur, wenn ich z.B. ein Falsches Passwort eingebe, dann kommt keine Fehlermeldung, aber es funktioniert auch nicht wie kann ich eine Fehlermeldung erscheinen lassen? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:13 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