AGB  ·  Datenschutz  ·  Impressum  







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

Rar Dll

Ein Thema von 1234567890987654321 · begonnen am 15. Jul 2010 · letzter Beitrag vom 22. Sep 2010
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#11

AW: Rar Dll

  Alt 15. Jul 2010, 10:24
Lazarus kommt mit den @ nicht klar:
unit1.pas(168,14) Error: Incompatible types: got "<procedure variable type of function:LongInt;StdCall>" expected "LongInt"
unit1.pas(183,7) Error: Can't assign values to an address
unit1.pas(184,7) Error: Can't assign values to an address
unit1.pas(185,7) Error: Can't assign values to an address
unit1.pas(186,7) Error: Can't assign values to an address
unit1.pas(187,7) Error: Can't assign values to an address
unit1.pas(188,7) Error: Can't assign values to an address
unit1.pas(189,7) Error: Can't assign values to an address
unit1.pas(190,7) Error: Can't assign values to an address
unit1.pas(191,7) Error: Can't assign values to an address
unit1.pas(219,31) Error: Incompatible types: got "Constant String" expected "TRAROpenArchiveData"
unit1.pas(228) Fatal: There were 13 errors compiling module, stopping
Und was passiert wenn du die @ weg lässt?
Alex
"Sage nicht alles, was du weißt, aber wisse alles, was du sagst!" Matthias Claudius
"Wer sich über Kritik ärgert, gibt zu, daß er sie verdient hat." Tacitus
  Mit Zitat antworten Zitat
1234567890987654321

Registriert seit: 8. Jun 2010
73 Beiträge
 
#12

AW: Rar Dll

  Alt 15. Jul 2010, 10:28
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)Word;StdCall>"
unrar.pas(170,29) Error: Incompatible types: got "Pointer" expected "<procedure variable type of function(var TRAROpenArchiveDataEx)Word;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
ACHTUNG: ICH VERWENDE LAZARUS
  Mit Zitat antworten Zitat
1234567890987654321

Registriert seit: 8. Jun 2010
73 Beiträge
 
#13

AW: Rar Dll

  Alt 15. Jul 2010, 11:06
Weis keiner eine Antwort?
ACHTUNG: ICH VERWENDE LAZARUS

Geändert von 1234567890987654321 (15. Jul 2010 um 11:19 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: Rar Dll

  Alt 15. Jul 2010, 12:32
Eigentlich sollte man nicht innerhalb von 24 Stunden Pushen.
Markus Kinzler
  Mit Zitat antworten Zitat
1234567890987654321

Registriert seit: 8. Jun 2010
73 Beiträge
 
#15

AW: Rar Dll

  Alt 15. Jul 2010, 12:45
Die Antwort hats ja jetzt gebracht...
ACHTUNG: ICH VERWENDE LAZARUS
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#16

AW: Rar Dll

  Alt 15. Jul 2010, 13:27
Das war keine Antwort, sondern ein Hinweis an dich, sich hier an die Spielregeln zu halten.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
1234567890987654321

Registriert seit: 8. Jun 2010
73 Beiträge
 
#17

AW: Rar Dll

  Alt 15. Jul 2010, 17:38
OK, dann bis moergen um 13 uhr
ACHTUNG: ICH VERWENDE LAZARUS
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Rar Dll

  Alt 15. Jul 2010, 18:08
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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (15. Jul 2010 um 18:11 Uhr)
  Mit Zitat antworten Zitat
1234567890987654321

Registriert seit: 8. Jun 2010
73 Beiträge
 
#19

AW: Rar Dll

  Alt 15. Jul 2010, 22:01
Na gut, sorry.

Hier der Code:
Delphi-Quellcode:
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.
P.S. Das wegkommentirte funktionirt nicht.
Hier ist immernoch der Fehler mit den @
ACHTUNG: ICH VERWENDE LAZARUS

Geändert von mkinzler (15. Jul 2010 um 22:25 Uhr) Grund: Code-Tag durch Delphi-Tag ersetzt
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#20

AW: Rar Dll

  Alt 15. Jul 2010, 22:26
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!
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 18:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz