![]() |
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:) |
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
|
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... |
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 :-( |
AW: Wie ZLib weitgehend unabhängig von classes.pas ?
Was spricht den gegen eine zurechtgestutzte classes.pas?
|
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...
|
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 |
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 >___< |
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. |
AW: Wie ZLib weitgehend unabhängig von classes.pas ?
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Oder du mußt doch die Classes nutzen. |
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... |
AW: Wie ZLib weitgehend unabhängig von classes.pas ?
Zitat:
Aber es wird und kann niemals kompatibel zu anderen TStream-Nachfahren sein, da es laut RTTI immer einen unterschiedlichen Ursprung haben wird. |
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 04:23 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