Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Komponenten zum Packen


O'rallY - Do 25.07.02 22:32
Titel: Komponenten zum Packen
Entschuldigt wenn meine Frage n bissl trivial ist, aber woher bekommt man am besten neue Komponenten. Z.B. eine Komponente zum Packen o.ä. . Kann mir jemand eine gute Quelle empfehlen?

Titel umbenannt. Tino


Thomas233 - Do 25.07.02 22:52

Hi!

Also die Frage is sehr leicht zu beantworten:
http://www.torry.net
DIE beste und umfangreichste Komponentenseite...

Ich hoffe dir damit weitergeholfen zu haben!


Alibi - Fr 26.07.02 00:04

Wesentlich schneller ist der Mirror http://homepages.borland.com/torry .

// Edit: gna, ein "s" vergessen.


DeCodeGuru - Fr 26.07.02 10:58

Zitat:
Wesentlich schneller ist der Mirror http://homepage.borland.com/torry .


Ja, öhm, als ich draufgeklickt habe, war die Seite halt nicht verfügbar. Stimmt etwas nicht mit dem Link, oder was ich nicht online? :mrgreen:
Aja, vielleicht is der Mirror aber im Moment platt. Wer weiss? :wink:


O'rallY - Fr 26.07.02 11:00

Vielen Dank!!! :mrgreen:


Alfons-G - Fr 26.07.02 14:20

Hi,
in diesem Link fehlt ein Zeichen, er heisst [url=homepages.borland.com/torry]http://homepages.borland.com/torry[/url].
Ansonsten gibt es noch [url=sunsite.informatik.rwth-aachen.de/delphi]Delphi Super Page[/url], [url=http://www.delphipages.com]Delphi Pages[/url], [url=vclcomponents.com]VCL-Components[/url] und viele mehr.

:)


hitstec - Fr 26.07.02 17:30

Benutze doch ZLib. Einfach


Quelltext
1:
uses ..., ZLib;                    

einfügen.

Und zwei Funktionen zum Packen in die Datei einbinden:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
function CompressStream(inpStream: TMemoryStream): TMemoryStream;
var 
  InpBuf, OutBuf: Pointer; 
  InpBytes, OutBytes: Integer; 
  outStream: TMemoryStream;
begin
  InpBuf := nil; 
  OutBuf := nil; 
  outStream:=TMemoryStream.Create;
  try
    GetMem(InpBuf, inpStream.Size); 
    inpStream.Position := 0; 
    InpBytes := inpStream.Read(InpBuf^, inpStream.Size); 
    CompressBuf(InpBuf, InpBytes, OutBuf, OutBytes);
    outStream.Write(OutBuf^, OutBytes);
  finally 
    if InpBuf <> nil then FreeMem(InpBuf); 
    if OutBuf <> nil then FreeMem(OutBuf); 
  end;
  result:=outStream;
end;

function DecompressStream(inpStream: TMemoryStream): TMemoryStream;
var
  InpBuf, OutBuf: Pointer;
  OutBytes, sz: Integer;
  outStream: TMemoryStream;
begin
  InpBuf := nil;
  OutBuf := nil;
  outStream:=TMemoryStream.Create;
  inpStream.Position:=0;
  sz     := inpStream.Size - inpStream.Position;
  if sz > 0 then
    try
      GetMem(InpBuf, sz);
      inpStream.Read(InpBuf^, sz);
      DecompressBuf(InpBuf, sz, 0, OutBuf, OutBytes);
      outStream.Write(OutBuf^, OutBytes);
    finally
      if InpBuf <> nil then FreeMem(InpBuf);
      if OutBuf <> nil then FreeMem(OutBuf);
    end;
  outStream.Position := 0;
  Result:=outStream;
end;


Die Sache basiert auf Streams. Die kann man leicht aus Dateien laden und in Dateien speichern. :)