![]() |
AW: Rar Dll
Zitat:
|
AW: Rar Dll
Dannkomen die Fehler:
unrar.pas(149,10) Warning: Function result does not seem to be set unrar.pas(169,29) Error: Incompatible types: got "Pointer" expected "<procedure variable type of function(var TRAROpenArchiveData):DWord;StdCall>" unrar.pas(170,29) Error: Incompatible types: got "Pointer" expected "<procedure variable type of function(var TRAROpenArchiveDataEx):DWord;StdCall>" unrar.pas(171,29) Error: Incompatible types: got "Pointer" expected "<procedure variable type of function(LongWord):LongInt;StdCall>" unrar.pas(172,29) Error: Incompatible types: got "Pointer" expected "<procedure variable type of function(LongWord,var TRARHeaderData):LongInt;StdCall>" unrar.pas(173,29) Error: Incompatible types: got "Pointer" expected "<procedure variable type of function(LongWord,var TRARHeaderDataEx):LongInt;StdCall>" unrar.pas(174,29) Error: Incompatible types: got "Pointer" expected "<procedure variable type of function(LongWord, LongInt, PChar, PChar):LongInt;StdCall>" unrar.pas(175,29) Error: Incompatible types: got "Pointer" expected "<procedure variable type of procedure(LongWord, PChar);StdCall>" unrar.pas(176,29) Error: Incompatible types: got "Pointer" expected "<procedure variable type of procedure(LongWord, TUnrarCallback, LongInt);StdCall>" unrar.pas(177,29) Error: Incompatible types: got "Pointer" expected "<procedure variable type of function:LongInt;StdCall>" unrar.pas(206) Fatal: There were 9 errors compiling module, stopping |
AW: Rar Dll
Weis keiner eine Antwort?:(:(:(
|
AW: Rar Dll
Eigentlich sollte man nicht innerhalb von 24 Stunden Pushen.
|
AW: Rar Dll
Die Antwort hats ja jetzt gebracht...
|
AW: Rar Dll
Das war keine Antwort, sondern ein Hinweis an dich, sich hier an die Spielregeln zu halten. :warn: :dp:
|
AW: Rar Dll
OK, dann bis moergen um 13 uhr:-D
|
AW: Rar Dll
Einfach nur "uninformative" Posts zum Zwecke des Pushens (nach oben holens) werden halt nicht gern gesehn, auserdem bringen sie garnichts, da viele sowieso nicht nur auf der Startseite/Portal nachsehn (ich schau mit z.B. auch oftmals alle Post seit dem letzen Besuch so grob duch, ob was dabei war)
Bei "wichtigen" Änderungen/Informationen kann man 24 Stunden lang seine Beiträge editieren und wenn es wirklich grundlegend Neues/Wichtiges zu sagen gibt, dann hat auch keiner was gegen einen Doppelpost/Pushen. PS: nicht alle, welche etwas zu einem Thema sagen können, sind ständig online, also ist es garnicht immer möglich daß immer sofort eine Antwort kommt (auch wenn es hier einigen oftmals zu schnell geht und nach nimma 'ner Minute einer antwortet) PSS: die Syntax von Lazarus ist auch etwas anders, als die von Delphi und da nicht soooo viele hier Lazarus/FPC benutzen, ist es da eh etwas schwieriger. So, nun wieder zum Topic/Thema: - wie sieht denn dein Code nun aktuell aus? - manchmal sind auch Beispiel-/Testprogramme nicht schlecht |
AW: Rar Dll
Na gut, sorry.
Hier der Code:
Delphi-Quellcode:
P.S. Das wegkommentirte funktionirt nicht.
unit Unrar;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, LResources, Forms, Controls, Graphics, Dialogs,Windows; const ERAR_END_ARCHIVE = 10; ERAR_NO_MEMORY = 11; ERAR_BAD_DATA = 12; ERAR_BAD_ARCHIVE = 13; ERAR_UNKNOWN_FORMAT = 14; ERAR_EOPEN = 15; ERAR_ECREATE = 16; ERAR_ECLOSE = 17; ERAR_EREAD = 18; ERAR_EWRITE = 19; ERAR_SMALL_BUF = 20; ERAR_UNKNOWN = 21; RAR_OM_LIST = 0; RAR_OM_EXTRACT = 1; RAR_SKIP = 0; RAR_TEST = 1; RAR_EXTRACT = 2; RAR_VOL_ASK = 0; RAR_VOL_NOTIFY = 1; RAR_DLL_VERSION = 3; UCM_CHANGEVOLUME = 0; UCM_PROCESSDATA = 1; UCM_NEEDPASSWORD = 2; type TRARHeaderData = packed record ArcName: packed array[0..Pred(260)] of Char; FileName: packed array[0..Pred(260)] of Char; Flags: UINT; PackSize: UINT; UnpSize: UINT; HostOS: UINT; FileCRC: UINT; FileTime: UINT; UnpVer: UINT; Method: UINT; FileAttr: UINT; CmtBuf: PChar; CmtBufSize: UINT; CmtSize: UINT; CmtState: UINT; end; TRARHeaderDataEx = packed record ArcName: packed array [0..1023] of char; ArcNameW: packed array [0..1023] of WideChar; FileName: packed array [0..1023] of char; FileNameW: packed array [0..1023] of WideChar; Flags: UINT; PackSize: UINT; PackSizeHigh: UINT; UnpSize: UINT; UnpSizeHigh: UINT; HostOS: UINT; FileCRC: UINT; FileTime: UINT; UnpVer: UINT; Method: UINT; FileAttr: UINT; CmtBuf: PChar; CmtBufSize: UINT; CmtSize: UINT; CmtState: UINT; Reserved: packed array [0..1023] of UINT; end; TRAROpenArchiveData = packed record ArcName: PChar; OpenMode: UINT; OpenResult: UINT; CmtBuf: PChar; CmtBufSize: UINT; CmtSize: UINT; CmtState: UINT; end; TRAROpenArchiveDataEx = packed record ArcName: PChar; ArcNameW: PWideChar; OpenMode: UINT; OpenResult: UINT; CmtBuf: PChar; CmtBufSize: UINT; CmtSize: UINT; CmtState: UINT; Flags: UINT; Reserved: packed array [0..31] of UINT; end; TUnrarCallback = function (Msg: UINT; UserData, P1, P2: Integer) :Integer; stdcall; TRAROpenArchive = function (var ArchiveData: TRAROpenArchiveData): THandle; stdcall; TRAROpenARchiveEx = function (var ArchiveData: TRAROpenArchiveDataEx): THandle; stdcall; TRARCloseArchive = function (hArcData: THandle): Integer; stdcall; TRARReadHeader = function (hArcData: THandle; var HeaderData: TRARHeaderData): Integer; stdcall; TRARReadHeaderEx = function (hArcData: THandle; var HeaderData: TRARHeaderDataEx): Integer; stdcall; TRARProcessFile = function (hArcData: THandle; Operation: Integer; DestPath, DestName: PChar): Integer; stdcall; TRARSetCallback = procedure (hArcData: THandle; UnrarCallback: TUnrarCallback; UserData:Integer); stdcall; TRARSetPassword = procedure (hArcData: THandle; Password: PChar); stdcall; TRARGetDllVersion = function: integer; stdcall; // Wrapper for DLL's function - old unrar.dll doesn't export RARGetDllVersion // Returns: -1 = DLL not found; 0 = old ver. (C-style callbacks); >0 = new ver. function RARDllGetVersion: integer; // Dynamic loading of DLL function UnrarDllLoad(const dllfilename : string) : Boolean; procedure UnrarDllUnload; var UnrarDllHandle : THandle; RAROpenArchive : TRAROpenArchive; RAROpenArchiveEx : TRAROpenArchiveEx; RARCloseArchive : TRARCloseArchive; RARReadHeader : TRARReadHeader; RARReadHeaderEx : TRARReadHeaderEx; RARProcessFile : TRARProcessFile; RARSetPassword : TRARSetPassword; RARSetCallback : TRARSetCallback; implementation var RARGetDllVersion : TRARGetDllVersion; ////////////////////////////////////////////////////////////////////// function RARDllGetVersion: integer; begin { if @RARGetDllVersion=nil then Result:= 0 else Result:= RARGetDllVersion; } end; ////////////////////////////////////////////////////////////////////// // Return: True = success function UnrarDllLoad(const dllfilename : string) : Boolean; var r : Boolean; begin r:=False; try UnrarDllHandle := LoadLibrary(PChar(dllfilename)); if UnrarDllHandle <> 0 then begin @RAROpenArchive := GetProcAddress(UnrarDllHandle, 'RAROpenArchive'); @RAROpenArchiveEx := GetProcAddress(UnrarDllHandle, 'RAROpenArchiveEx'); @RARCloseArchive := GetProcAddress(UnrarDllHandle, 'RARCloseArchive'); @RARReadHeader := GetProcAddress(UnrarDllHandle, 'RARReadHeader'); @RARReadHeaderEx := GetProcAddress(UnrarDllHandle, 'RARReadHeaderEx'); @RARProcessFile := GetProcAddress(UnrarDllHandle, 'RARProcessFile'); @RARSetPassword := GetProcAddress(UnrarDllHandle, 'RARSetPassword'); @RARSetCallback := GetProcAddress(UnrarDllHandle, 'RARSetCallback'); @RARGetDllVersion := 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 r:=True; end; except end; Result:=r; end; ////////////////////////////////////////////////////////////////////// procedure UnrarDllUnload; begin if UnrarDllHandle <> 0 then FreeLibrary(UnrarDllHandle); end; initialization {$I unrar.lrs} end. Hier ist immernoch der Fehler mit den @ |
AW: Rar Dll
Wenn ich dir sage, du sollst den richtigen Code-Tag nehmen, dann meine ich es so!
Und das mit dem Pushen, war auch kein Scherz! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:35 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