Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Wie ZLib weitgehend unabhängig von classes.pas ? (https://www.delphipraxis.net/153370-wie-zlib-weitgehend-unabhaengig-von-classes-pas.html)

stho 30. Jul 2010 11:29

Wie ZLib weitgehend unabhängig von classes.pas ?
 
Halli hallo :-)
Ich möchte eigentlich nur die ZLib.pas in einer nonVCL anwendung verwenden.
Jetzt habe ich weitgehend auf die Classes.pas in meinem Programm verzichtet, doch in ZLib.pas ist diese eingebunden :x
Gibt es eine Variante von classes.pas on der NUR die TStream-klasse (sowie benötigte ableitungen) vorhanden ist?
Oder muss ich mich wirklich durch diese Klassen kämpfen und alles händisch entfernen? (sind knapp 12.000 zeilen!?!?!?! :pale:)

mkinzler 30. Jul 2010 11:31

AW: Wie ZLib weitgehend unabhängig von classes.pas ?
 
Erzeuge dir doch eine Kopie der Unit, die nur die benötigte(n) Typen(n) besitzt und speichere diese ins selbe Verzeichnis

stho 30. Jul 2010 12:08

AW: Wie ZLib weitgehend unabhängig von classes.pas ?
 
naja, genau DAS wollte ich eben NICHT machen :cry:
Diese sch*** Units sind leider so verflochten... :?
da blicke ich kaum durch... und immerhin sinds ja NUR 12.000 zeilen...

stho 2. Aug 2010 12:27

AW: Wie ZLib weitgehend unabhängig von classes.pas ?
 
*push*
Seit letztem Freitag besteht das Problem noch immer...
und KolZLib ist auch keine angemessene Lösung für mein problem, habe ich herausgefunden :-(

mkinzler 2. Aug 2010 12:28

AW: Wie ZLib weitgehend unabhängig von classes.pas ?
 
Was spricht den gegen eine zurechtgestutzte classes.pas?

wicht 2. Aug 2010 12:40

AW: Wie ZLib weitgehend unabhängig von classes.pas ?
 
Würde ich auch so machen, und habe ich auch mal so gemacht. Das TStream Zeug ist gar nicht mal soviel und wenn ich mich recht erinnere brauchst du dazu nur noch ein paar Exception-Klassen, die glaube ich auch in Classes.pas wohnen, sofern du den TStream Code nicht umschreiben möchtest...

himitsu 2. Aug 2010 12:43

AW: Wie ZLib weitgehend unabhängig von classes.pas ?
 
Ist es sdenn wirklich so schwer?

- erstmal alles kopieren > ZLib.pas und die ZLib/*.obj
(und die ZLib.pas vielleicht noch umbennenn)
- dann die unerwünschten Units rauslöschen (SysUtils und Classes)
- und nun alles löschen, welches nicht mehr unterstützt wird, also alles was mit Streams zu tun hat

- TBytes nicht löschen, sondern die Deklaration kopieren
TBytes = array of Byte;
- und die beiden Exceptions auch noch ersetzen
z.B. durch System.Error(reRangeError);

und schon läuft es

stho 2. Aug 2010 14:02

AW: Wie ZLib weitgehend unabhängig von classes.pas ?
 
Ja, leider IST es so schwer :(
Ich habe mich schon dran versucht alles unnötige raus zu löschen, jedoch erkennt er TFileStream in benutzung der ZLib nicht mehr als einen Nach-Nachfolger von TStream an >___<

turboPASCAL 2. Aug 2010 14:10

AW: Wie ZLib weitgehend unabhängig von classes.pas ?
 
Na und dann schreibt man sich mit Hilfe der Classes.pas eine kleine TStream-Klasse.
Ist eigentlich alles nur eine Geduld und Fleiss Frage aber nicht wirklich schwer zu
realisieren.

himitsu 2. Aug 2010 14:24

AW: Wie ZLib weitgehend unabhängig von classes.pas ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von stho (Beitrag 1038988)
Ja, leider IST es so schwer :(

Ich sagte doch ... löschen ... eine eigene "kompatible" TStream-Klasse zu schreiben geht halt nicht.

Oder du mußt doch die Classes nutzen.

stho 2. Aug 2010 15:35

AW: Wie ZLib weitgehend unabhängig von classes.pas ?
 
naja, die classes will ich ja nicht nutzen... :?
danke für die .pas datei von dir die du angehangen hast :thumb:
werde mir die in den kommenden 1-2 tagen mal anschauen... :pale:
aber so auf den ersten blick sehen einige funktionen redefiniert aus.
Naja, aber vielen dank schonmal dafür...
sobald ich eine passende lösung gefunden habe (vielleicht doch eine kleine TStream-klasse?) werde ich sie hier posten...

himitsu 2. Aug 2010 15:46

AW: Wie ZLib weitgehend unabhängig von classes.pas ?
 
Zitat:

Zitat von stho (Beitrag 1039017)
vielleicht doch eine kleine TStream-klasse?

Theoretisch, von den Methoden und Feldern her, könnte man schon etwas gleich aufbauen.

Aber es wird und kann niemals kompatibel zu anderen TStream-Nachfahren sein, da es laut RTTI immer einen unterschiedlichen Ursprung haben wird.

turboPASCAL 2. Aug 2010 20:25

AW: Wie ZLib weitgehend unabhängig von classes.pas ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mal in die ZLib geguckt, eigentlich braucht es die Streams nicht.
Man kann doch über Pointer die Daten Zuweisen.


Delphi-Quellcode:
unit
  uZippozip;

interface

const
  ZIPDLL = 'Zippozip.dll';

type
  TZAlloc   = function (opaque: Pointer; items, size: Integer): Pointer;
  TZFree    = procedure (opaque, block: Pointer);
  TOnProcess = procedure(percent: integer); stdcall;

  TZCompressionLevel = (
    zcNone,
    zcFastest,
    zcDefault,
    zcMax,
    zcLevel1,
    zcLevel2,
    zcLevel3,
    zcLevel4,
    zcLevel5,
    zcLevel6,
    zcLevel7,
    zcLevel8,
    zcLevel9
  );

procedure ZCompress(const inBuffer: Pointer; inSize: Integer;
  out outBuffer: Pointer; out outSize: Integer;
  level: TZCompressionLevel = zcDefault); stdcall;
  external ZIPDLL;

procedure ZDecompress(const inBuffer: Pointer; inSize: Integer;
  out outBuffer: Pointer; out outSize: Integer; outEstimate: Integer = 0);
  stdcall; external ZIPDLL;

implementation

end.


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