Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Rar Dll (https://www.delphipraxis.net/152970-rar-dll.html)

1234567890987654321 15. Jul 2010 08:15

Rar Dll
 
Guten morgen,
Ich würde gerne mein Programm eine .rar Datei entpacken lassen.
Habe dazu auch schon dieses,
und dieses
Touturial gefunden.
Wollte die Dll am Anfang erst mal statisch einbinden.
Aber wenn ich diesen Code anwende:
Delphi-Quellcode:
function RAROpenArchive(ArchiveData: PRAROpenArchiveData): THandle; stdcall;
external 'C:\urar.dll';

function RARProcessFile(hArcData: THandle; Operation: Integer; DestPath: PChar;
DestName: PChar): Integer; stdcall;
external 'C:\unrar.dll';

procedure TForm1.Button1Click(Sender: TObject);
begin
  h:=RAROpenArchive('c:\b.rar');
  RARProcessFile(h,RAR_EXTRACT,nil,nil);
end;
Kommt bei der Zeile:
function RAROpenArchive(ArchiveData: PRAROpenArchiveData):
der Fehler
unit1.pas(31,57) Error: Identifier not found "PRAROpenArchiveData"
ud hier:
RARProcessFile(h,RAR_EXTRACT,nil,nil);,
dass: unit1.pas(43,31) Error: Identifier not found "RAR_EXTRACT"

Hier einmal alle Fehlermeldungen(jetzt sind auch Bemerkungen dabei)
unit1.pas(31,57) Error: Identifier not found "PRAROpenArchiveData"
unit1.pas(42,31) Error: Incompatible type for arg no. 1: Got "Constant String", expected "<erroneous type>"
unit1.pas(31,10) Hint: Found declaration: RAROpenArchive(<erroneous type>):DWord; StdCall;
unit1.pas(43,31) Error: Identifier not found "RAR_EXTRACT"
unit1.pas(51) Fatal: There were 3 errors compiling module, stopping


Kann mir jemand helfen, bzw. ein klleines Stückchen Code geben?
Danke schonmal für eure Antworten

gsh 15. Jul 2010 08:41

AW: Rar Dll
 
http://www.koders.com/delphi/fidF893...7C7393EBE.aspx

Für Lazurus musst du vielleicht noch ein paar Anpassungen machen

GPRSNerd 15. Jul 2010 08:41

AW: Rar Dll
 
Der Schreibfehler für den DLL-Namen in genau dieser Zeile ist dir aufgefallen?
Solle UNRAR.DLL und nicht URAR.DLL lauten...

Delphi-Quellcode:
function RAROpenArchive(ArchiveData: PRAROpenArchiveData): THandle; stdcall;
external 'C:\urar.dll';

mkinzler 15. Jul 2010 08:42

AW: Rar Dll
 
Aber du darfst auch bei Lazarus-Code gerne den Delphi-Tag nehmen!

1234567890987654321 15. Jul 2010 08:44

AW: Rar Dll
 
Danke, der ist aber öeider nicht mal entscheident,
es kommt wegen der Fehler gar nich erst zur ausführung:(

P.S. Sorry vllt. kans jemand noch vreschieben?

gsh 15. Jul 2010 08:47

AW: Rar Dll
 
Zitat:

Zitat von 1234567890987654321 (Beitrag 1035394)
Danke, der ist aber öeider nicht mal entscheident,
es kommt wegen der Fehler gar nich erst zur ausführung:(

Klar weil dir die Deklarationen von den Konstanten und den Records fehlen.
Schau dir mal meinen Link an den ich oben gepostet hab.

himitsu 15. Jul 2010 08:53

AW: Rar Dll
 
Und den absoluten Pfad anzugeben ist auch nicht sonderlich gut.
(abgesehn davon, daß solche DLLs nicht nach C:\ gehören)

Ohne Pfad
Delphi-Quellcode:
... external 'urar.dll';
sollte ausreichen
das System sucht sich dann die DLL in den allgemein gültigen Verzeichnissen (Programmverzeichnis, Windos/System32 und andere global registrierte Pfade/%PATH% )

hoika 15. Jul 2010 08:59

AW: Rar Dll
 
Hallo,

da in der unrar.pas kein PRAROpenArchiveData definiert ist,
würde ich es so machen

Delphi-Quellcode:
function RAROpenArchive(var ArchiveData: TRAROpenArchiveData) XXX
oder du ergänzt die pas-Datei

Delphi-Quellcode:
PRAROpenArchiveData = ^TRAROpenArchiveData;
TRAROpenArchiveData = packed record


Heiko

1234567890987654321 15. Jul 2010 09:00

AW: Rar Dll
 
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

1234567890987654321 15. Jul 2010 09:17

AW: Rar Dll
 
Und noch eine Frage:
Wie entpacke ich mit der unrar.pas?

gsh 15. Jul 2010 09:24

AW: Rar Dll
 
Zitat:

Zitat von 1234567890987654321 (Beitrag 1035399)
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?

1234567890987654321 15. Jul 2010 09:28

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

1234567890987654321 15. Jul 2010 10:06

AW: Rar Dll
 
Weis keiner eine Antwort?:(:(:(

mkinzler 15. Jul 2010 11:32

AW: Rar Dll
 
Eigentlich sollte man nicht innerhalb von 24 Stunden Pushen.

1234567890987654321 15. Jul 2010 11:45

AW: Rar Dll
 
Die Antwort hats ja jetzt gebracht...

Mithrandir 15. Jul 2010 12:27

AW: Rar Dll
 
Das war keine Antwort, sondern ein Hinweis an dich, sich hier an die Spielregeln zu halten. :warn: :dp:

1234567890987654321 15. Jul 2010 16:38

AW: Rar Dll
 
OK, dann bis moergen um 13 uhr:-D

himitsu 15. Jul 2010 17:08

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

1234567890987654321 15. Jul 2010 21:01

AW: Rar Dll
 
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 @

mkinzler 15. Jul 2010 21:26

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!

1234567890987654321 15. Jul 2010 21:37

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

mkinzler 15. Jul 2010 21:41

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.

1234567890987654321 15. Jul 2010 21:43

AW: Rar Dll
 
Achso, ich dachte ihr meint das "Codische", und nicht das Optische.
Aber was ist denn jetzt mit den @?

omata 16. Jul 2010 00:14

AW: Rar Dll
 
Habe mal des weiter oben angegebene Demo nach Lazarus übersetzt.

Da das Beispiel niemanden interessiert -> entfernt.

himitsu 16. Jul 2010 06:26

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:
{$mode objfpc}{$H+}
gegen
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]
Bei Google suchenmode objfpc GetProcAddress lieferte z.B. Folgendes:
http://www.lazarusforum.de/viewtopic.php?f=55&t=3292
hier ist auch ein Beispiel mit enthalten http://wiki.lazarus.freepascal.org/Hardware_Access/de

PS: im Lazarus-Wiki/-Forum findet man zu solchen lazarus-, bzw. fpc-spezifischen Problemem bestimmt öfters mal eine Lösung :wink:

[edit2]

Delphi-Quellcode:
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;
einen leeren Try-Except-Block macht man einfach nicht :warn:
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;

1234567890987654321 16. Jul 2010 08:06

AW: Rar Dll
 
Danke:-d:-d:-d:-d:-d

Mithrandir 16. Jul 2010 08:17

AW: Rar Dll
 
Zitat:

Zitat von himitsu (Beitrag 1035616)
[...] (krankes) Problem mit Funktionszeigern [...] die haben irgendeine andere (kranke) Syntax dafür.

Ich würde den Freepascal-Compiler nicht unbedingt als "krank" bezeichnen. Delphianer haben sich nur daran gewöhnt, Dinge nicht explizit (de-)referenzieren zu müssen. Im Großen und Ganzen kann FPC viele Dinge, die auch Delphi kann.

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. ;)

himitsu 16. Jul 2010 08:54

AW: Rar Dll
 
Also das ist schon etwas nervig ...
Delphi-Quellcode:
RAROpenArchive := GetProcAddress(UnrarDllHandle, 'RAROpenArchive');
wer soll denn bei solchen Fehlermeldungen ....
Zitat:

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
auf sowas kommen?
Delphi-Quellcode:
RAROpenArchive := TRAROpenArchive(GetProcAddress(UnrarDllHandle, 'RAROpenArchive'));
Aber OK, hatte es ja auch nicht so "böse" gemeint. :angel:

Mithrandir 16. Jul 2010 09:16

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.

1234567890987654321 18. Sep 2010 16:49

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?

omata 19. Sep 2010 19:38

AW: Rar Dll
 
Ich habe das Demo leider selber nicht mehr. Vielleicht kannst du es nochmal anhängen.

1234567890987654321 21. Sep 2010 14:12

AW: Rar Dll
 
Liste der Anhänge anzeigen (Anzahl: 1)
Oh, sorry für das späte antworten,hab gar nicht gemerkt, dass es ne' Seite 4 gibt.

omata 22. Sep 2010 12:11

AW: Rar Dll
 
Liste der Anhänge anzeigen (Anzahl: 1)
Die Meldung wurde vom Programm verarbeitet und in das Statusfenster geschrieben. Man musste nur das Statusfenster öffnen.

Hier mal eine neue Version, in dieser öffnet sich das Statusfenster nun automatisch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:56 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