Rar oder Zip Komponente gesucht

Rund um die LCL und andere Komponenten
rudirabbit
Beiträge: 15
Registriert: Do 11. Jan 2007, 18:33

Rar oder Zip Komponente gesucht

Beitrag von rudirabbit »

Hi !
Gibt es so was für Lazarus.
Habe schon zlibar versucht, aber kackt leider ab, bei sehr großen Archiven, da zuerst ein TMemoryStream erzeugt werden muß. wenn dieser eben nicht ausreicht, dann schaut finster aus :x

Meine Delphi Zip Komponente kann ich nicht importieren, da eine dll benutzt wird.

MFG !

Benutzeravatar
theo
Beiträge: 10859
Registriert: Mo 11. Sep 2006, 19:01

Re: Rar oder Zip Komponente gesucht

Beitrag von theo »

rudirabbit hat geschrieben:Hi !
Gibt es so was für Lazarus.
Habe schon zlibar versucht, aber kackt leider ab, bei sehr großen Archiven, da zuerst ein TMemoryStream erzeugt werden muß. wenn dieser eben nicht ausreicht, dann schaut finster aus :x

Meine Delphi Zip Komponente kann ich nicht importieren, da eine dll benutzt wird.

MFG !
Es gab kürzlich im Hauptforum einen Link: http://suncreation.org/ocr/fparchive.zip" onclick="window.open(this.href);return false;

Hab's nicht getestet, aber da müsste Abbrevia ZIP für FPC drin sein.

rudirabbit
Beiträge: 15
Registriert: Do 11. Jan 2007, 18:33

Beitrag von rudirabbit »

Hi !
Habe LibTar versucht, funktioniert top, ist nur eine Unit.
Dann habe ich mit einer rekursiven Procedure einen Teil meiner FP gescannt und mit Libtar in eine tar Datei gepackt. :)

MFG !

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

tar komprimiert aber nicht dessen bist du dir bewusst ... ?!
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

knight
Beiträge: 802
Registriert: Mi 13. Sep 2006, 22:30

Beitrag von knight »

Wie wäre es damit:
http://wiki.lazarus.freepascal.org/Free ... ivePackage" onclick="window.open(this.href);return false; ?

knight

rudirabbit
Beiträge: 15
Registriert: Do 11. Jan 2007, 18:33

Beitrag von rudirabbit »

von Christian :
tar komprimiert aber nicht dessen bist du dir bewusst ... ?!
Jetzt ja - :oops: :oops: Bin noch in der Lernphase unter Linux :wink:
Hat aber auch Vorteile : Zumindest weiß ich jetzt was ein tar Archiv eigentlich ist .

@knight: Werde das mal testen Danke !

MFG !

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Beitrag von Euklid »

Die gepackten komprimierten Dinger heisen unter Linux häufig .tar.gz

Finde es interessant und merkwürdig zugleich, dass sich auf den unterschiedlichen Plattformen so unterschiedliche Formate durchgesetzt haben.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Das liegt an der Lizenzpolitik der plattformen seit es auch freie implementierungen für zip gibt setzt sich auch das langsam durch unter linux
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

rudirabbit
Beiträge: 15
Registriert: Do 11. Jan 2007, 18:33

Beitrag von rudirabbit »

Hallo !
Das mit dem tar wäre schon ein guter Ansatz, man müsste es dann in nur in ein tar.gz packen.
Das gibt aber Probleme mit dem Speicherplatz auf der Festplatte.
Ich glaube ich muss mal beschreiben was ich machen will :wink:
Habe ein Delphi Programm (Windoof) gebaut, dass den Backup eines Forums vereinfachen bzw Automatisieren soll. (Also FTP und SQL Dump ) Das Funktioniert auch so ganz gut, nur der FTP Dump dauert recht lange, da jede Datei via FTP einzeln kopiert werden muß . Meine Idee war nun ein consolen Programm auf dem entfernten Rechner. Dies erstellt dort ein tar.gz Archiv, ich kopiere dann nur ein große Datei via FTP.
Ähnlich wie beim SQL Dump, nutze dort die sqldump auf dem entfernten Rechner.

Da in meinem Fällen der Webspace nicht gerade groß bemessen ist, ca 70 % voll , wird ein tar Archiv dort nicht erstellt werden können.

MFG !

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

ich würde auf dem entfernten rechner einfach ein script nehmen um das zu realisieren.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

Gibt doch für Linux B2zip, das packt doch recht ordentlich und ist frei.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

rudirabbit
Beiträge: 15
Registriert: Do 11. Jan 2007, 18:33

Beitrag von rudirabbit »

Hallo !
Vorab Danke für die Antworten :wink:

Hätte da eine Idee, nur an der Umsetzung scheitert es. Ich erstelle das tar Archiv nicht komplett, sondern unterbreche den Vorgang und Packe das dann, etwa so:
AProcess.CommandLine := 'gzip -c Teil.tar >> alles.tar.gz';

Das funktioniert aber nicht (test Code):

Code: Alles auswählen

Aprocess:=tprocess.Create(nil);
 AProcess.Options := AProcess.Options + [poWaitOnExit];    
 AProcess.CommandLine := 'gzip -c  Teil.tar  >>  alles.tar.gz';
AProcess.Execute;
Aprocess.Free;

Es kommt dann auf der Konsole das:
...........
0�`�NRtf�Tw/�f�vy�}{.f��q g|4^���}�w�ٝ>C�x�V|Ojv��f� n��^�m�//��g�WΊ�H���K=�iv>alles.tar.gz : No such file or directory

Als Consoleneingabe : gzip -c Teil.tar >> alles.tar.gz funktioniert es wie erwartet
alles.tar.gz wird erstellt !

Es scheint an Process zu liegen , nur was läuft falsch :cry:
MFG !

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

Hmmm, das kommt wohl nun drauf an, von wo aus du dein programm startest. Wenn du das nämlich vom lazarus aus startest ist das VZ von lazarus dein Start- und Ausführungs-VZ. Wenn dann deine Teil.tar da liegt mag das gehen, das ist aber eher unwahrscheinlich.

Du solltest also beim Programmstart mal irgendwo ein:

Code: Alles auswählen

getdir(0, ProgramDir);
veranstalten und das überprüfen wenn du deine Aktion startest. Man kann auch vorher mit:

Code: Alles auswählen

if FileExists('Teil.tar') then begin
 
  end;
absichern, daß das gewünschte File auch tatsächlich vorhanden ist. Falls nicht wechselt man halt mit:

Code: Alles auswählen

{$I-]
   chdir('MyDir');
  {$I+}
  if IOResult = 0 then begin
 
  end;
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

rudirabbit
Beiträge: 15
Registriert: Do 11. Jan 2007, 18:33

Beitrag von rudirabbit »

Hallo !
Das mit dem Pfad ist auch nicht der Fehler, meine Lazarus Anwendung ist ein Konsolen Programm.
Und das liegt in dem Verzeichnis in dem sich teil.tar befindet.
Und wird auch dort in der Konsole gestartet.
Habe auch schon Aprocess.GetNamePath mit eingebunden, zur Sicherheit - leider :(

MFG !

schnullerbacke
Beiträge: 1187
Registriert: Mi 13. Dez 2006, 10:58
OS, Lazarus, FPC: Winux (L 1.2.xy FPC 2.6.z)
CPU-Target: AMD A4-6400 APU
Wohnort: Hamburg

Beitrag von schnullerbacke »

Da gibt es noch eine Spezialität von Linux. Das sucht nämlich auch nicht freiwillig *.so im Start-VZ. Normalerweise sollte man bei Linux gezielt in das VZ wechseln (chdir...) oder den kompletten Pfad angeben. Das hat was mit der User-Verwaltung zu tun, sichert einfach ab, das deine Anwendung nicht in verbotenes Terrain greifen soll.
Humor ist der Knopf, der verhindert, daß uns der Kragen platzt.

(Ringelnatz)

Antworten