XbZLib - 2.00 - Doku ? - addDir() und Pfade ...

Moderator: Moderatoren

Antworten
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

XbZLib - 2.00 - Doku ? - addDir() und Pfade ...

Beitrag von brandelh »

Hallo,

ich nutze schon seit langem die 1.1.4 Version und hatte bisher keinen Grund auf die 2.0 zu wechseln.
Nun habe ich aber ein Problem und dachte mir eventuell hat die 2.0 einen verbesserten Befehl, aber
dort ist die gleiche Hilfedatei enthalten :(

Eventuell weiß ja jemand von euch einen Rat.

Problem: auf einem Webserver sollen alle *.DB* eines Verzeichnissen inkl. der Unterverzeichnisse in ein ZIP gespeichert werden.

also \WebRoot\....\DatenBasis\MandantX\Daten\....\*.db* in die ZIP, aber mit relativem Pfad unter MandantX:

ZIP \ :arrow: \WebRoot\....\DatenBasis\MandantX\
ZIP \*.* = Dateien im Stammverzeichnis der ZIP entsprechen dem Mandantenverzeichnis.
ZIP \Daten\*.* = Dateien im Unterverzeichnis ...\Daten\...
etc.

Mit der Methode :addFile() geht sowas einfach:

Code: Alles auswählen

oZip:AddFile('StammVerz.dbf', '\WebRoot\....\DatenBasis\MandantX')  // diese kommt nach ZIP \
oZip:AddFile('Daten\Daten.dbf', '\WebRoot\....\DatenBasis\MandantX')  // diese kommt nach ZIP \Daten ... perfekt :-)
leider habe ich aber viele Unterverzeichnisse und ich will die nicht mit Xbase++ untersuchen, die Methode :AddDir() sollte das besser können.

Code: Alles auswählen

:AddDir([<cFileSpec>],  
         [<cRootDir>],  
         [<cAttribs>],  
         [<lSubDirs>],  
         [<lAddPath>],  
         [<lAddNote>]) --> nQuit  
Hier habe ich aber ein Problem !

cFileSpec - ermöglicht nur eine Dateiauswahlmaske, aber KEINEN GRUNDPFAD !
cRootDir - kann ich angeben, dann wird ab diesem mit dem zippen begonnen, angeblich werden auch relative Pfade gespeichert, ...
lAddPath - wird automatisch .t. wenn ich auch lSubDirs auf .t. setzte.

Ich möchte ja auch relative Pfade, aber er macht Relativ von der DATEI zu CURDIR() und nicht zu cRootDir was ich erwartet hätte.

Nun musste ich den curdir() umstellen, was ich nicht gerne mache, auf dem WebServer sind komplette Pfadangaben auf jeden Fall besser,
aber ich habe es nicht anders hin bekommen.

Bietet die 2.0 hier mehr ?
Wie bekommt man von der DLL heraus, welche Funktionen und Parameter diese benutzt ?
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: XbZLib - 2.00 - Doku ? - addPath() und Pfade ...

Beitrag von Koverhage »

Hubert,

vielleicht hat Andreas ja (zumindest intern für sich) eine aktuelle Hilfe. Würde ihm einfach über
Xbase++ Newsgroup eine Mail schicken.
Gruß
Klaus
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: XbZLib - 2.00 - Doku ? - addPath() und Pfade ...

Beitrag von Koverhage »

Eventuell antwortet ja Andreas hier im Forum.
Tom oder Martin müssten wissen, ob Andreas hier auch angemeldet ist.
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: XbZLib - 2.00 - Doku ? - addPath() und Pfade ...

Beitrag von brandelh »

Hi,

:roll: ich habe gerade eine Message von mir von vor ein paar Jahren gelesen ... der QUELLCODE liegt bei ... :badgrin:

Ich sehe mal ob ich da eventuell einen Parameter mehr ... 8)
Gruß
Hubert
Benutzeravatar
Koverhage
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2470
Registriert: Fr, 23. Dez 2005 8:00
Wohnort: Aalen
Hat sich bedankt: 102 Mal
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: XbZLib - 2.00 - Doku ? - addPath() und Pfade ...

Beitrag von Koverhage »

Wenn Du schon dabei ist wäre ein Passwort für das Archiv nicht schlecht ;-)
Gruß
Klaus
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: XbZLib - 2.00 - Doku ? - addPath() und Pfade ...

Beitrag von brandelh »

Hallo Klaus,

ein Passwort setzt voraus, dass die darunterliegende zlib.dll bzw. zlib1.dll dieses unterstützt und ich in der Lage bin es anzusprechen ;-)
Ich fürchte, dass Phil und Andreas die Verschlüsselung mit Passwort eingebaut hätten, wenn es die zlib.dll hergegeben hätte ;-)

ABER eines habe ich eben gesehen, das mir viel Tipperei erspart.
In Bezug auf Arrays steht es zwar in der Doku, aber ich hatte es überlesen ...

cRoot[-1] entspricht right(cRoot,1) ;-)

allerdings wird es wohl auch einen Laufzeitfehler geben, wenn der String kein Zeichen enthält.
Ähnlich einem "123"[5] ;-)
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: XbZLib - 2.00 - Doku ? - addPath() und Pfade ...

Beitrag von brandelh »

Hi,

genau in er PRG mit der Klasse ist im Code die fehlerhafte Stelle (meiner Meinung nach muss eine ZIP immer relativ zum aktuellen Vorgabepfad sein ;-) )
gefunden, ich kläre mal in der Alaska News ab, wie wir das regeln. ;-)
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: XbZLib - 2.00 - Doku ? - addPath() und Pfade ...

Beitrag von brandelh »

Koverhage hat geschrieben:Wenn Du schon dabei ist wäre ein Passwort für das Archiv nicht schlecht ;-)
Hi,

ich habe mir die originale ZLIB1.DLL (inkl. Quellcode) besorgt und nachgeforscht.
Dort steht in "zlib-1.2.5\contrib\minizip\crypt.h" :
...
This code support the "Traditional PKWARE Encryption".

The new AES encryption added on Zip format by Winzip (see the page
http://www.winzip.com/aes_info.htm ) and PKWare PKZip 5.x Strong
Encryption is not supported.
ich vermute stark, dass diese alte Verschlüsselung keinen wirklichen Wert hat.

Ich werde also eine eigene Klasse von XbZLib() ableiten, AddDir() umschreiben,
die neue ZLIB1.DLL 1.2.5 verwenden und für 1.90.331 und 1.90.355 kompilieren.

Das geht schnell, ich kann diese in meinem Projekt verwenden und als solche hochladen.
Eventuell wird dann diese ins Original eingebaut, man wird sehen ;-)
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: XbZLib - 2.00 - Doku ? - addDir() und Pfade ...

Beitrag von brandelh »

Hallo,

Ich habe eine neue Klasse abgeleitet und AddDir() ersetzt.
Ich denke, dass diese Methode jetzt so arbeitet wie es sein sollte,
beim Original wird immer der physikalische Pfad in der ZIP gespeichert.

Code: Alles auswählen

*------------------------------- =>   XbZLibZipHB.ZIP
Class XbZLibZipHB from XbZLibZip
    EXPORTED:
    Method AddDir    // Replace original !
EndClass
*-------------------------------
Zusätzlich habe ich auch die neueste ZLib1.DLL besorgt und alles mit 1.90.331 and 1.90.355 getestet.
Hier kann man übrigens ab und zu nachsehen und das Original bekommen.
Wichtig: es muss die ZLIB1.DLL sein (C-Aufrufkonvention), die ZLIBWAPI.DLL geht nicht !

Code: Alles auswählen

// zlib1.DLL
// zLib Home Site       => http://www.zlib.net/
// binary download - in the middle of the page:
   * zlib compiled DLL, version 1.2.5,
     zipfile format (100K,
     MD5 checksum 102ba2c232ef5709626db1fdeb53af18)
   * US (zlib.net)
// XbZLibZip() 2.00.146 => look in this thread for last URL
Ergebnisse:

Code: Alles auswählen

9 DBF with together 6,84 GB (7.349.427.224 Bytes)
1 DBF with 1,99 GB (2.146.304.000 Bytes) inkl.

00:46:12 Start
00:46:12 DBE:  DBFNTX
00:46:12 DBE:  1000000000  ALT etwa 1 GB
00:46:12 DBE:  2147483647  NEU etwa 2 GB

00:46:12 XbZLib.DLL-Version:  2.00.146
00:46:12 ZLib.DLL-Version:    1.2.5
00:46:12 Xbase++ Version:     Xbase++ (R) Version 1.90.355

00:46:12 Create 1. ZIP Byte:         817.298
00:46:12 Create 2. ZIP Byte:     208.667.240
00:47:32 Create 3. ZIP Byte:   3.569.971.708
00:50:13 End in 10 seconds or press key

Time 4:01 min
die neue Klasse ist MyTest.PRG, welches auch die Testdaten inkl. D:\DATA\... erzeugt.
Ich habe auch die DLLs für 1.90.355 and 1.90.331 in kleine ZIPs gepackt, mit der Struktur von XPPW32\...

Ihr dürft es gerne nutzen, aber ich übernehme keine Garantie ;-)

Tschüß
Hubert
Dateianhänge
XbZLibZipHB.ZIP
(3.94 KiB) 378-mal heruntergeladen
XbZlib20_Install_XppW32_1.90.355.zip
(815.92 KiB) 405-mal heruntergeladen
XbZlib20_Install_XppW32_1.90.331.zip
(812.99 KiB) 358-mal heruntergeladen
Gruß
Hubert
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: XbZLib - 2.00 - Doku ? - addDir() und Pfade ...

Beitrag von Herbert »

Wieder mal ein super Beitrag aus Huberts Code-Küche!
Danke =D>
Grüsse Herbert
Immer in Bewegung...
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: XbZLib - 2.00 - Doku ? - addDir() und Pfade ...

Beitrag von brandelh »

Das Konzept der Xbase LIB nervt bei jeder CTP neu ... ich plane dies so umzuschreiben, dass man ein einfaches PRG File zum einbinden ins Projekt hat.
Soviel länger kann der Build auch nicht laufen ;-)

ABER: wenn schon ... frage ich mich ob man nicht eine bessere Grundlage bekommen kann. 7z z.B. kann sogar AES Verschlüsselung, kennt jemand eine DLL die man nutzen könnte ?
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbZLib - 2.00 - Doku ? - addDir() und Pfade ...

Beitrag von AUGE_OHR »

Frage : kann man mit Xbase++ (32bit) eine DLL ansprechen die > 4 GB erzeugt ?

p.s. ich nutzte die Windows interne ZIP Funktion und verschlüssele die Daten "im" Zip
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: XbZLib - 2.00 - Doku ? - addDir() und Pfade ...

Beitrag von brandelh »

Hallo Jimmy,

Dateien > 4 GB ... auf jeden Fall, ich habe hier 8 GB große Videodateien.
Ob allerdings die interne ZIP Funktion das auch kann weiß ich nicht.

Aber zur eingebauten ZIP Version könntest du mal was schreiben 8)
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: XbZLib - 2.00 - Doku ? - addDir() und Pfade ...

Beitrag von AUGE_OHR »

brandelh hat geschrieben:Dateien > 4 GB ... auf jeden Fall, ich habe hier 8 GB große Videodateien.
Ob allerdings die interne ZIP Funktion das auch kann weiß ich nicht.
ich hatte gerade versucht eine 5GB Datei in ein ZIP zu packen und Probleme ... danach habe ich die "eingebaute" Window ZIP Funktion benutzt und das ging.
brandelh hat geschrieben:Aber zur eingebauten ZIP Version könntest du mal was schreiben 8)
habe ich doch in der Wissensbasis http://www.xbaseforum.de/viewtopic.php?f=16&t=5306
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: XbZLib - 2.00 - Doku ? - addDir() und Pfade ...

Beitrag von brandelh »

Danke für den LINK, die Einschränkungen sind mein Problem.
Ich denke ich werde zunächst den XbZLib-Code so ändern, dass er einfach als PRG ins normale Projekt kommt.
Gruß
Hubert
Antworten