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 3 von 4     123 4      
1234567890987654321

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

AW: Rar Dll

  Alt 15. Jul 2010, 22:37
Das mit dem Code-Tag habe ich aber nicht verstanden, wo muss das hin.
Und jetzt an alle:
Entschuldigung wegen dem push
ACHTUNG: ICH VERWENDE LAZARUS
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Rar Dll

  Alt 15. Jul 2010, 22:41
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.
Markus Kinzler
  Mit Zitat antworten Zitat
1234567890987654321

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

AW: Rar Dll

  Alt 15. Jul 2010, 22:43
Achso, ich dachte ihr meint das "Codische", und nicht das Optische.
Aber was ist denn jetzt mit den @?
ACHTUNG: ICH VERWENDE LAZARUS
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#24

AW: Rar Dll

  Alt 16. Jul 2010, 01:14
Habe mal des weiter oben angegebene Demo nach Lazarus übersetzt.

Da das Beispiel niemanden interessiert -> entfernt.

Geändert von omata (16. Jul 2010 um 09:31 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Rar Dll

  Alt 16. Jul 2010, 07:26
krass, ich glaub ich hatte mein Lazarus gerade zum ersten mal dieses Jahr wieder verwendet

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 {$mode objfpc}{$H+} gegen {$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

[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
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;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (16. Jul 2010 um 08:09 Uhr)
  Mit Zitat antworten Zitat
1234567890987654321

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

AW: Rar Dll

  Alt 16. Jul 2010, 09:06
Danke:-d:-d:-d:-d:-d
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
 
#27

AW: Rar Dll

  Alt 16. Jul 2010, 09:17
[...] (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.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Rar Dll

  Alt 16. Jul 2010, 09:54
Also das ist schon etwas nervig ...
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?
RAROpenArchive := TRAROpenArchive(GetProcAddress(UnrarDllHandle, 'RAROpenArchive')); Aber OK, hatte es ja auch nicht so "böse" gemeint.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (16. Jul 2010 um 10:13 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

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

AW: Rar Dll

  Alt 16. Jul 2010, 10:16
Ja, darüber bin ich damals natürlich auch gestolpert. Ist schon nervig, aber wenn mans weiß - na ja, man kann damit leben.
米斯蘭迪爾
"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
 
#30

AW: Rar Dll

  Alt 18. Sep 2010, 17:49
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?
ACHTUNG: ICH VERWENDE LAZARUS

Geändert von 1234567890987654321 (18. Sep 2010 um 18:01 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 4     123 4      


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:17 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