TZipper
TZipper
Hallo,
ich möchte Daten packen und entpacken und habe hier im Forum zwar ein paar Themen gefunden, aber die helfen nicht wirklich.
So weit ich das verstanden habe benötigt man den TZipper hierzu, wo jedoch bekomme ich diesen und wie binde ich es in Lazarus ein?
Oder gibt es eine andereMöglichkeit Daten mit Lazarus (free) zu packen- und entpackken. Würde mich freuen wenn mir jemand eine,
auch für nicht Profis verständliche Hilfe hierzu bieten könnte.
Freundliche Grüße
Joker
ich möchte Daten packen und entpacken und habe hier im Forum zwar ein paar Themen gefunden, aber die helfen nicht wirklich.
So weit ich das verstanden habe benötigt man den TZipper hierzu, wo jedoch bekomme ich diesen und wie binde ich es in Lazarus ein?
Oder gibt es eine andereMöglichkeit Daten mit Lazarus (free) zu packen- und entpackken. Würde mich freuen wenn mir jemand eine,
auch für nicht Profis verständliche Hilfe hierzu bieten könnte.
Freundliche Grüße
Joker
-
- Beiträge: 36
- Registriert: Fr 17. Okt 2008, 19:24
- OS, Lazarus, FPC: Debian X64, Lazarus 1.1, FPC 2.7.1
- CPU-Target: x86, ARM
Re: TZipper
Oder vielleicht auch:
http://www.theo.ch/lazarus/uDataPacker.pas
Kommt immer drauf an, was du wie und wohin packen/entpacken willst....
Luggi
http://www.theo.ch/lazarus/uDataPacker.pas
Kommt immer drauf an, was du wie und wohin packen/entpacken willst....
Luggi
Re: TZipper
Hallo Theo,
vorab danke für die schnelle Antwort bzw. Link. Wie bereits geschrieben kenne ich diesen Beitrag bereits (beim googeln kommt auch nur das), aber leider hilft mir der Beitrag/Code dort nicht weiter.
Vielmeher verstehe ich nicht was ParamStr(1); sein soll, ist das der Name den die Zip-Datei bekommen soll?
könntes Du mir die rot gekennzichneten Stellen erklären vor allem will ich nicht alles zippen/packen sondern beispielsweise nur Bild.bmp und ich möchtes es auch mit einem Passwort schützen.
Oder besser könntest du den Code so ergänzen, das ich damit die Bild.bmp (von obigen Beispiel) gezippt und mit einem passwort verschlüssel bekomme, wäre Dir sehr dankbar dafür.
Freundliche Grüße
Joker
vorab danke für die schnelle Antwort bzw. Link. Wie bereits geschrieben kenne ich diesen Beitrag bereits (beim googeln kommt auch nur das), aber leider hilft mir der Beitrag/Code dort nicht weiter.
Vielmeher verstehe ich nicht was ParamStr(1); sein soll, ist das der Name den die Zip-Datei bekommen soll?
Code: Alles auswählen
var
Zipper: TZipper;
i : integer; // FRAGE 1: müsste hier nicht die Variable i deklariert werden
begin
try
Zipper := TZipper.Create; //FRAGE 2: TZipper ist das ein Bedienelement von Lazarus, wo finde ich diesen
Zipper.FileName := ParamStr(1); //FRAGE 3: muss anstelle von ParmStr(1) der Zip-Datei ein Name vergeben werden,
for I := 2 to ParamCount do //FRAGE
Zipper.Entries.AddFileEntry(ParamStr(I), ParamStr(I)); //FRAGE ?
Zipper.ZipAllFiles;
finally
Zipper.Free;
end;
end;
end
könntes Du mir die rot gekennzichneten Stellen erklären vor allem will ich nicht alles zippen/packen sondern beispielsweise nur Bild.bmp und ich möchtes es auch mit einem Passwort schützen.
Oder besser könntest du den Code so ergänzen, das ich damit die Bild.bmp (von obigen Beispiel) gezippt und mit einem passwort verschlüssel bekomme, wäre Dir sehr dankbar dafür.
Freundliche Grüße
Joker
Zuletzt geändert von Lori am Fr 12. Apr 2013, 17:59, insgesamt 1-mal geändert.
Grund: Bitte den Highlighter nutzen
Grund: Bitte den Highlighter nutzen
-
- Lazarusforum e. V.
- Beiträge: 3158
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: TZipper
Hallo,
ich melde mich mal an theos Stelle mit ein paar Antworten.
Ja, das war ein Fehler im Wiki.
TZipper ist eine normale Klasse und kein Bedienelement. Daher findest du sie auch nicht in Lazarus. Die Klasse ist in der Unit Zipper (vgl. den Wiki-Artikel) implementiert. Diese wird mit dem Free Pascal Compiler ausgeliefert -- du hast sie also schon.
Wenn die Zip-Datei einen bestimmten Dateinamen haben soll, musst du diesen hier natürlich selbst vorgeben.
Das Beispiel-Programm erstellt eine Zip-Datei, in der alle Dateien gespeichert werden, die per Komandozeile übergeben wurden. Das macht man zum Beispiel über ein Dos-Fenster ("testprojekt" ist ein beispielhafter Programmname):
ich melde mich mal an theos Stelle mit ein paar Antworten.
Joker hat geschrieben:// FRAGE 1: müsste hier nicht die Variable i deklariert werden
Ja, das war ein Fehler im Wiki.
Joker hat geschrieben:FRAGE 2: TZipper ist das ein Bedienelement von Lazarus, wo finde ich diesen
TZipper ist eine normale Klasse und kein Bedienelement. Daher findest du sie auch nicht in Lazarus. Die Klasse ist in der Unit Zipper (vgl. den Wiki-Artikel) implementiert. Diese wird mit dem Free Pascal Compiler ausgeliefert -- du hast sie also schon.
Joker hat geschrieben://FRAGE 3: muss anstelle von ParmStr(1) der Zip-Datei ein Name vergeben werden,
Wenn die Zip-Datei einen bestimmten Dateinamen haben soll, musst du diesen hier natürlich selbst vorgeben.
Joker hat geschrieben: for I := 2 to ParamCount do //FRAGE ?
Zipper.Entries.AddFileEntry(ParamStr(I), ParamStr(I)); //FRAGE ?
Das Beispiel-Programm erstellt eine Zip-Datei, in der alle Dateien gespeichert werden, die per Komandozeile übergeben wurden. Das macht man zum Beispiel über ein Dos-Fenster ("testprojekt" ist ein beispielhafter Programmname):
Code: Alles auswählen
C:\User\myname\>testprojekt datei1.txt datei2.txt
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: TZipper
So komm ich nicht weiter, daher bitte nur ganze Beiträge posten oder gar nicht
Was ist hier falsch?
Code: Alles auswählen
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Zipper;
type
TForm1 = class(TForm)
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
Zipper: TZipper;
i : integer;
implementation
{$R *.lfm}
begin
OurZipper := TZipper.Create;
try
OurZipper.FileName := ParamStr(1);
for I := 2 to ParamCount do
//OurZipper.Entries.AddFileEntry(ParamStr(I), ParamStr(I));
OurZipper.Entries.AddFileEntry D:\Test\>testprojekt datei1.txt datei2.txt
OurZipper.ZipAllFiles;
finally
OurZipper.Free;
end;
end.
Was ist hier falsch?
Re: TZipper
Hmm, mir scheint dein Problem ist nicht direkt beim Zipper, sondern vielmehr beim Pascal /Lazarus / Delphi programmieren allgemein.
Mach doch erst mal ein paar Tutorials durch. z.B. hier
http://www.delphi-treff.de/tutorials/grundlagen/
Die sind zwar für Delphi, aber das ist auf diesem Niveau bei Lazarus ziemlich gleich.
Mach doch erst mal ein paar Tutorials durch. z.B. hier
http://www.delphi-treff.de/tutorials/grundlagen/
Die sind zwar für Delphi, aber das ist auf diesem Niveau bei Lazarus ziemlich gleich.
-
- Beiträge: 36
- Registriert: Fr 17. Okt 2008, 19:24
- OS, Lazarus, FPC: Debian X64, Lazarus 1.1, FPC 2.7.1
- CPU-Target: x86, ARM
Re: TZipper
Joker hat geschrieben:So komm ich nicht weiter, daher bitte nur ganze Beiträge posten oder gar nichthttp://www.lazarusforum.de/posting ... 957a77358#
Für mich klingt das sehr nach "gar nicht". Oder sollen wir hier wiedermal jemandem seine Hausaufgaben machen?
Luggi
Re: TZipper
Das war jetzt meine erste Frage in diesem Forum und schon werde ich als unqulifiziert verwiesen, schade, traurig.
Ich kenne auch die Delphi-Seite und leugne auch nicht das ich Lazarus-Anfänger bin, aber wollte jetzt einfach mal nach "Hello World" etwas programmieren, das mich aktuell interessiert. Und da der Quelltext für diese Zip-Geschichte nur wenige Zeilen enthält, dachte ich mir, dass ich mit meiner ursprünglich gestellten Frage, niemanden überfordern würde. Aber ich hatte schon mit so einer oder ähnlicher Antwort gerechnet, da es in den meisten Foren immer einpaar User gibt, denen es nicht darum geht etwas für die Gemeinde beizutragen (das ist Sinn und Zweck eines Forums denke ich), sondern BeitragsPunkte zu sammeln.
Nur schade der nächste Interessen der nach diesem Thema sucht, wird lediglich auch nur auf diesen Beitrag stoßen.
Ich schließe hiermit diesen Beitrag
Freundliche Grüße
Joker
Ich kenne auch die Delphi-Seite und leugne auch nicht das ich Lazarus-Anfänger bin, aber wollte jetzt einfach mal nach "Hello World" etwas programmieren, das mich aktuell interessiert. Und da der Quelltext für diese Zip-Geschichte nur wenige Zeilen enthält, dachte ich mir, dass ich mit meiner ursprünglich gestellten Frage, niemanden überfordern würde. Aber ich hatte schon mit so einer oder ähnlicher Antwort gerechnet, da es in den meisten Foren immer einpaar User gibt, denen es nicht darum geht etwas für die Gemeinde beizutragen (das ist Sinn und Zweck eines Forums denke ich), sondern BeitragsPunkte zu sammeln.
Nur schade der nächste Interessen der nach diesem Thema sucht, wird lediglich auch nur auf diesen Beitrag stoßen.
Ich schließe hiermit diesen Beitrag
Freundliche Grüße
Joker
-
- Lazarusforum e. V.
- Beiträge: 3158
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: TZipper
Joker hat geschrieben:Das war jetzt meine erste Frage in diesem Forum und schon werde ich als unqulifiziert verwiesen, schade, traurig.
Deine Beispiele zeigen, dass dir grundlegendes Wissen fehlt. Einige Beispiele sind: Wie ruft man eine Funktion auf, wie übergebe ich eine Zeichenkette (Dateiname etc.) an eine Funktion, was ist eine Variable usw. Da genau solche Dinge in einem Tutorial behandelt werden, solltest du dir dazu zumindest einmal durchlesen.
Viele Leute -- so wie du -- möchten eine Sprache lernen. Daher tauchen Fragen nach den Grundlagen immer wieder (und das häufig) auf. Damit man nicht jedem die Grundlagen von neuem erklären muss, wurden Tutorials geschrieben, die sich die Lernenden durchlesen und durcharbeiten können. Von dieser Seite möchte ich dich um ein wenig Verständnis bitten, wenn man dich hier auf entsprechende Hilfestellungen hinweist.
Joker hat geschrieben:So komm ich nicht weiter, daher bitte nur ganze Beiträge posten oder gar nicht [...] Was ist hier falsch?
Ich vermute mal, dass sich das direkt auf mein Posting bezieht. Nun ja, das ist mein Stil. Ich möchte dich zum Nachfragen anregen. Wenn du die Frage richtig stellst, werden viele bereit sein dir zu helfen. Vielleicht wäre ein solche Frage: Wie übergebe ich einen Dateinamen an eine Funktion? Manchmal sehen Fragen ziemlich banal aus. Aber dadurch, dass sie so einfach sind, können sie auch schnell beantwortet werden und du bist deiner Lösung ein Stück weiter. Fertige Lösungen wollen viele nicht anbieten (auch wenn sie es könnten), denn dann wäre der Lerneffekt weg.
Joker hat geschrieben:OurZipper.Entries.AddFileEntry D:\Test\>testprojekt datei1.txt datei2.txt
Zur Erklärung dieser Funktion:
- OurZipper ist ein Objekt von der Klasse TZipper und stellt damit alles bereit, was man zum Bearbeiten von Zip-Dateien braucht (Verschlüsselung ist nicht möglich!). Dieses hat eine Eigenschaft (engl. property) Entries. Darin sind alle Dateieinträge gespeichert. Die Eigenschaft Entries bietet die Funktion AddFileEntry() um Einträge hinzuzufügen. Die Funktion AddFileEntry() erwartet 2 Parameter: einen Dateinamen auf der Festplatte (die Datei kommt in das Archiv) und einen Namen, unter dem die Datei im Archiv abgespeichert werden.
- Ein Dateiname ist nichts anderes als eine Folge von Zeichen (mehrere Zeichen nacheinander; Zeichen sind zum Beispiel: Abcdefäü+#ß9). Eine Folge von Zeichen wird auch Zeichenkette genannt. Im Englischen heißen diese String. In Pascal setzt man eine Zeichenkette in einfache Anführungszeichen. Ein Beispiel: 'Eine Zeichenkette', oder auch: 'C:\Windows\calc.exe'
- Will man eine Funktion aufrufen, schreibt man: <Funktionsname>(Parameter1, Parameter2, ..., ParameterN); Dabei muss man <Funtionsname> durch den Namen der Funktion ersetzen (ggf. wie oben Beschrieben den Variablennamen des Objektes davor schreiben); Natürlich muss Parameter1, Parameter2 usw. durch Variablen oder direkt durch einen festen Wert ausgetauscht werden.
- Unter der Annahme, dass in der Variablen OurZipper (jetzt kommen deine Fragen: Was ist eine Variable?) ein Objekt der Klasse TZipper (deine Fragen: Was ist eine Klasse? Was ist ein Objekt?), wäre der Funktionsaufruf:
Code: Alles auswählen
OurZipper.Entries.AddFileEntry('datei1.txt', 'datei2.txt');
Damit würde die Datei datei1.txt in das Archiv übernommen und dort unter dem Namen datei2.txt abgelegt.
Vermutlich hast du jetzt noch einige Fragen. Die kannst du hier natürlich stellen. Einige werden auch schon durch vorhandene Tutorials beantwortet.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- 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:
Re: TZipper
Leider verstehen viele Einsteiger den Unterschied zwischen einem Forum wo man sich aus freundlichkeit hilft und einem Kostenpflichtigen Kurs für 600 Eur / Tag nicht so ganz.
Du kannst doch nicht ernsthaft erwarten das die Leute dir vorkaun wozu du zu faul bist einfach mal kurz google zu bemühen. Hättest du einfach mal ParamStr(1) bei google eingegeben wärst du mit dem ersten Ergebnis hier gelandet: http://www.delphibasics.co.uk/RTL.asp?Name=ParamStr
Du erwartest das sich jemand hinsetzt und dir ParamStr(1) mit mehreren Sätzen erklärt. Eventl formuliert er die Erklärung dann nicht perfekt und braucht noch weitere 2 Anläufe und in summe 30 min seiner Zeit um dir das beizubringen. Anstatt das einfach mal zu suchen und eine Seite zu finden wos perfekt erklärt ist, die mit bedacht geschrieben ist.
Edit: Oh Sry seh gerad du warst das gar ned mit ParamStr(1)
Du kannst doch nicht ernsthaft erwarten das die Leute dir vorkaun wozu du zu faul bist einfach mal kurz google zu bemühen. Hättest du einfach mal ParamStr(1) bei google eingegeben wärst du mit dem ersten Ergebnis hier gelandet: http://www.delphibasics.co.uk/RTL.asp?Name=ParamStr
Du erwartest das sich jemand hinsetzt und dir ParamStr(1) mit mehreren Sätzen erklärt. Eventl formuliert er die Erklärung dann nicht perfekt und braucht noch weitere 2 Anläufe und in summe 30 min seiner Zeit um dir das beizubringen. Anstatt das einfach mal zu suchen und eine Seite zu finden wos perfekt erklärt ist, die mit bedacht geschrieben ist.
Edit: Oh Sry seh gerad du warst das gar ned mit ParamStr(1)
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/