home *** CD-ROM | disk | FTP | other *** search
/ The Best of the Best / _.img / w037 / info.inf / INFO.TMP
Text File  |  1992-08-16  |  12KB  |  204 lines

  1.  
  2. {
  3.   DEMO - DEMO - DEMO- DEMO - DEMO - DEMO - DEMO - DEMO - DEMO - DEMO
  4.  
  5.   Diese Datei dient der Demonstration des Entpackens "On the Fly".
  6.  
  7.   Sie ist identisch mit der ausgelieferten Unit WUZ.PAS !
  8. }
  9.  
  10.  
  11.  
  12. Unit WUZ;
  13.  
  14. { UNZIP100.DLL
  15.  
  16.   Copyright (c) 1992 by Ralf Hertsch, Mannheim.
  17.  
  18.   Schnittstellen-Unit zum Zugriff auf die Bibliothek UNZIP100.DLL.
  19.  
  20.   Die Bibliothek und Unit wurden mit Turbo Pascal for Windows v1.00 erstellt,
  21.   es sollte jedoch kein Problem darstellen, die Schnittstellen Unit durch eine
  22.   entsprechende C-Header Datei zu ersetzen.
  23.  
  24.   Mit Hilfe der Bibliothek UNZIP100.DLL ist es m÷glich, *.ZIP Archive die mit dem
  25.   Programm PKZIP 1.xx erstellt wurden, unter Windows zu entpacken OHNE auf die
  26.   DOS-Ebene zu wechseln und PKUNZIP aufzurufen.
  27.  
  28.   Die Bibliothek wurde in erster Linie erstellt, um komfortable Installations-
  29.   Routinen bzw. -Programme schreiben zu k÷nnen.
  30.  
  31.   Es k÷nnen durch entsprechende Nachrichten, die von der DLL verschickt werden,
  32.   Selektionen vorgenommen werden (bereits bestehende Dateien ⁿberschreiben, nur
  33.   bestimmte Dateien aus dem Archiv entpacken usw.).
  34.  
  35.   Der jeweilige Stand des Entpackens wird in Prozent gemeldet. Damit ist es
  36.   m÷glich Balkenanzeigen zu realisieren usw. usf.
  37.  
  38.   Die Bibliothek prⁿft generell, ob der Speicherplatz auf dem DatentrΣger zum
  39.   Entpacken ausreichend ist.
  40.  
  41.   Die Bibliothek ist auch geeignet, bestimmte Dateien eines Programms erst bei
  42.   Bedarf zu entpacken (z.B. Hilfedateien oder nicht stΣndig ben÷tigte Unter-
  43.   programme, die Archivbezeichnung *.ZIP ist nicht zwingend notwendig).
  44.  
  45.  
  46.   BEISPIEL        : Siehe Programm TEST, das im Quellcode vorliegt.
  47.  
  48.   SHAREWARE       : Die Bibliothek UNZIP100.DLL ist Shareware !
  49.                     Wenn Sie mit dieser Biblithek nach einer angemessenen
  50.                     Testphase von etwa 4 Wochen weiterarbeiten m÷chten, oder
  51.                     diese mit eigenen Programmen zusammen weitergeben wollen,
  52.                     mⁿssen Sie sich als Anwender registrieren lassen.
  53.  
  54.   EINSCHR─NKUNGEN : Die Sharewareversion ist funktional nicht eingeschrΣnkt.
  55.                     Beim Schlie▀en der Bibliothek wird eine Meldung mit dem
  56.                     Shareware-Hinweis ausgeben.
  57.  
  58.   WICHTIG         : Wenn Sie die Bibliothek nicht ordnungsgemΣ▀ Schlie▀en, weil
  59.                     Sie den Shareware-Hinweis unterdrⁿcken wollen, wird der
  60.                     durch die DLL belegte Speicher nicht freigegeben !
  61.                     Dies kann spΣtestens bei einem erneuten Aufruf der DLL
  62.                     fatale Folgen haben !
  63.  
  64.   REGISTRIERUNG   : Kostet DM 15,--.
  65.                     Sie erhalten die neuste Version der Bibliothek UNZIP100.DLL
  66.                     und k÷nnen diese beliebig mit eigenen Programmen verwenden
  67.                     sowie weitergeben.
  68.  
  69.   KONTAKT         : Ralf Hertsch
  70.                     Riedfeldstra▀e 3
  71.                     D-W-6800 Mannheim 1
  72.                     (0621) 35630
  73.  
  74. }
  75.  
  76.  
  77. INTERFACE
  78.  
  79. Uses
  80.   WinTypes,  { KompatibilitΣt zu anderen Windows Programmiersprachen }
  81.   WinProcs;  { wird fⁿr RegisterWindowMessage ben÷tigt               }
  82.  
  83. Var
  84.   { Messages die von UNZIP100.DLL verschickt werden }
  85.  
  86.   wm_PercentDoneOneStep         : Word;  { Lokale Datei ist zu xx Prozent entpackt. Angabe in  1 % Schritten,  }
  87.                                          { Der Wert wird in Msg.wParam ⁿbergeben.                              }
  88.   wm_PercentDoneTenStep         : Word;  { Lokale Datei ist zu xx Prozent entpackt. Angabe in 10 % Schritten   }
  89.                                          { Der Wert wird in Msg.wParam ⁿbergeben.                              }
  90.   wm_NameOfLocalZIPFile         : Word;  { Dateiname der lokalen Datei, die gerade entpackt wird               }
  91.                                          { ▄bergabe erfolgt mit:                                               }
  92.                                          {          - Offset  des Meldungstrings in Msg.wParam                 }
  93.                                          {          - Segment des Meldungstrings in Msg.lParam                 }
  94.   wm_WUZErrorStr                : Word;  { Fehlermeldung, enthΣlt einen vollstΣndigen Meldungsstring           }
  95.                                          { ▄bergabe erfolgt mit:                                               }
  96.                                          {          - Offset  des Meldungstrings in Msg.wParam                 }
  97.                                          {          - Segment des Meldungstrings in Msg.lParam                 }
  98.   wm_WUZErrorID                 : Word;  { Fehlermeldung, enthΣlt die Kennziffer in Msg.wParam                 }
  99.   wm_WUZQuestionOverWrite       : Word;  { Anfrage, ob eine bereits bestehende Datei ⁿberschrieben werden soll }
  100.                                          { ▄bergabe des Dateinamens erfolgt mit:                               }
  101.                                          {          - Offset  des Meldungstrings in Msg.wParam                 }
  102.                                          {          - Segment des Meldungstrings in Msg.lParam                 }
  103.   wm_WUZQuestionID              : Word;  { dto. - nur Kennziffer, ist fⁿr automatische Prozesse gedacht.       }
  104.                                          { Diese M÷glichkeit wird von UNZIP100.DLL noch nicht unterstⁿtzt.     }
  105.   wm_WUZUnzipThisFile           : Word;  { Anfrage, ob diese Datei aus dem Archiv entpackt werden soll         }
  106.                                          { ▄bergabe des Dateinamens erfolgt mit:                               }
  107.                                          {          - Offset  des Meldungstrings in Msg.wParam                 }
  108.                                          {          - Segment des Meldungstrings in Msg.lParam                 }
  109.  
  110.  
  111. Const
  112.   { Fehlercodes von UNZIP100.DLL, werden von wm_WUZErrorID in Msg.wParam ⁿbergeben.
  113.     Die Implementierung der Codes ist nur notwendig, wenn Sie auf deren Grundlage eigene
  114.     Fehlermeldungen erstellen und anzeigen wollen.
  115.  
  116.     UNZIP100.DLL gibt mit wm_WUZErrorStr eine vollstΣndige Fehlermeldung an das aufrufende
  117.     Programm weiter.
  118.     Die verwendeten Strings sind als Ressourcen in der DLL eingebunden und k÷nnen mit WRT
  119.     oder RESOURCE WORKSHOP ⁿberarbeitet werden. Der reservierte Puffer in der Bibliothek
  120.     kann max. 250 Zeichen aufnehmen. Die String-IDs sind mit den Fehlercodes identisch.       }
  121.  
  122.   ef_WrongZIPVersion            = 10001; { Archiv wurde mit PKZIP 1.93a oder 2.xx erstellt                      }
  123.   ef_BadShannonFanoData         = 10002; { SHANNON-FANO Entschlⁿsselungsbaum enthΣlt fehlerhafte Daten          }
  124.   ef_BadShannonFanoTree         = 10003; { SHANNON-FANO Entschlⁿsselungsbaum ist fehlerhaft aufgebaut           }
  125.   ef_BadLocalFileHeader         = 10004; { Der lokale Dateikopf enthΣlt fehlerhafte Angaben                     }
  126.   ef_BadLocalFileNameLength     = 10005; { Der lokale Dateiname enthΣlt eine ungⁿltige LΣngenangabe             }
  127.   ef_BadLocalExtraField         = 10006; { Das lokale Feld fⁿr Extra Informationen ist fehlerhaft               }
  128.   ef_BadCodeDetected            = 10007; { fehlerhafter Verschlⁿsselungscode, Datei kann nicht gelesen werden   }
  129.   ef_StackOverflow              = 10008; { Stapelⁿberlauf                                                       }
  130.   ef_NoMemoryForIOBuffers       = 10009; { Nicht genug Speicher um die I/O Puffer zu allozieren                 }
  131.   ef_NotEnoughDiskSpace         = 10010; { Nicht genug freier Speicherplatz auf dem DatentrΣger                 }
  132.   ef_NoDirectorySelected        = 10011; { Es wurde kein Verzeichnis angegeben                                  }
  133.   ef_DirectoryNotExist          = 10012; { Das angegebene Verzeichnis existiert nicht                           }
  134.   ef_OpenFileError              = 10013; { Fehler beim ╓ffnen der Datei                                         }
  135.   ef_FileFindError              = 10014; { gesuchte Datei nicht gefunden                                        }
  136.   ef_DirectoryFindError         = 10015; { gesuchtes Verzeichnis nicht gefunden                                 }
  137.   ef_FileAccessError            = 10016; { Fehler beim Zugriff auf Datei                                        }
  138.   ef_UnknownError               = 10017; { unbekannter Fehler. Kennziffer findet sich in Msg.lParam             }
  139.   ef_Code256                    = 10018; { Verschlⁿsselungssegment ⁿberschreitet 256 Zeichen                    }
  140.   ef_NotEnoughMemorySkipFile    = 10019; { Nicht genⁿgend Speicher, DLL geht zur nΣchsten lokalen Datei         }
  141.   ef_UnknownCompressMethod      = 10020; { unbekannter Kompressions Algorithmus                                 }
  142.   ef_CRCCheckError              = 10021; { Prⁿfsummenfehler. Entpackte Datei ist wahrscheinlich Fehlerhaft !    }
  143.  
  144.   { Anfragen an das aufrufende Programm }
  145.  
  146.   qf_OverWriteFile              = 12001; { Datei existiert schon. Soll die Datei ⁿberschrieben werden ?         }
  147.                                          { Ist fⁿr automatische Prozesse gedacht, wird noch nicht unterstⁿtzt.  }
  148.  
  149.  
  150. { verfⁿgbare Methoden der DLL }
  151.  
  152. Procedure InitDLL;
  153.           { initialisiert die DLL, mu▀ jedesmal aufgerufen werden       }
  154.  
  155. Procedure DoneDLL;
  156.           { setzt die DLL zurⁿck, mu▀ explizit aufgerufen werden,
  157.             damit allozierter Speicher wieder freigegeben wird          }
  158.  
  159. Function  ProzessUnzip(AZipFile : PChar; ATarget : PChar): Bool;
  160.           { Startet das eigentiche Entpacken des ZIP-File.
  161.             AZIPFile enthΣlt den vollstΣndigen Suchpfad zum ZIP-Archiv,
  162.             ATarget enthΣlt das Verzeichnis, in dem Entpackt werden
  163.             soll.
  164.             HINWEIS: Existiert ATarget NICHT, bricht UNZIP100.DLL ab.   }
  165.  
  166. Procedure WUZReplyMessage(AMsg : Word; AReply : Word);
  167.           { Ist die Antwortmethode der aufrufenden Application          }
  168.  
  169.  
  170. Procedure WUZQuiet(APercent : Bool);
  171.           { Ist APercent TRUE, werden die Botschaften
  172.                          - wm_PercentDoneOneStep
  173.                          - wm_PercentDoneTenStep
  174.             unterdrⁿckt. Voreinstellung ist FALSE. Sinn ist die Erh÷hung
  175.             der Performance, wenn keine Prozent-Angaben ⁿber den Stand
  176.             des Entpackens der einzelnen Archivdateien ben÷tigt werden. }
  177.  
  178. Procedure WUZOverWriteAlways(AllFiles : Bool);
  179.           { Ist AllFiles TRUE, wird die Botschaft wm_WUZQuestionOverWrite
  180.             unterdrⁿckt. Bereits bestehende Dateien werden generell
  181.             ⁿberschrieben.                                              }
  182.  
  183. IMPLEMENTATION
  184.  
  185. Procedure InitDLL;              External 'UnZip100' Index 1;
  186. Procedure DoneDLL;              External 'UnZip100' Index 2;
  187. Function  ProzessUnzip;         External 'UnZip100' Index 3;
  188. Procedure WUZReplyMessage;      External 'UnZip100' Index 4;
  189. Procedure WUZQuiet;             External 'UnZip100' Index 5;
  190. Procedure WUZOverWriteAlways;   External 'UnZip100' Index 6;
  191.  
  192. Begin
  193.   { Wichtig : Die einzelnen Messages der DLL mⁿssen registriert sein ! }
  194.  
  195.   wm_PercentDoneOneStep     := RegisterWindowMessage('PercentDoneOneStep');
  196.   wm_PercentDoneTenStep     := RegisterWindowMessage('PercentDoneTenStep');
  197.   wm_NameOfLocalZIPFile     := RegisterWindowMessage('NameOfLocalZIPFile');
  198.   wm_WUZErrorStr            := RegisterWindowMessage('WUZErrorStr');
  199.   wm_WUZErrorID             := RegisterWindowMessage('WUZErrorID');
  200.   wm_WUZQuestionOverWrite   := RegisterWindowMessage('WUZQuestionOverWrite');
  201.   wm_WUZQuestionID          := RegisterWindowMessage('WUZQuestionID');
  202.   wm_WUZUnzipThisFile       := RegisterWindowMessage('WUZUnzipThisFile');
  203. End.
  204.