PureZip Lib

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

der verstehe ich nune garnicht...

ich habe jetzt
ElseIf OpenInfo$

so geändert
ElseIf OpenInfo$ <> ""

und an dieser stelle ist der String leer also geht er nicht in die anfrage rein....

aber weiter oben habe ich ja noch ne abfrage ob sich in OpenInfo$ was befindet... und da geht es ja
also hier geht es

Code: Alles auswählen

If OpenInfo$
          OpenWindow(2,0,0,100,30,"Warten...",#PB_Window_BorderLess|#PB_Window_WindowCentered)
          CreateGadgetList(WindowID(2))
          TextGadget(21,5,5,90,20,"Bitte Warten...")
          Date$ = FormatDate("%yyyy.%mm.%dd[%ii]", Date())
          ArchiveFileName.s = Name.s + " " + Date$ + ".zip"
          PureZIP_Archive_Create(ArchiveFileName.s,  #APPEND_STATUS_CREATE)    
aber warum dann hier nicht:

Code: Alles auswählen

          ElseIf OpenInfo$ <> ""
            MessageRequester("", OpenInfo$)
            PureZIP_Archive_Compress(Textfile$, #False)
          EndIf
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Magix-Soft <Kain> hat geschrieben:der verstehe ich nune garnicht...
schreib Dein If-ElseIf-Gewurschtel bitte noch mal neu. Selbst wenn Du das
mit OpenInfo$ herausgefunden hast, dann wirst Du Dich wundern, warum Du
immer nur 1 Midi in das Zip packen kannst.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

hmmm stimmt... ich hatte noch garnicht mehere midis versucht...
nach deiner ausage hin habe ich es versucht und ich kann wirklich nur eine in das archiv packen....

aber das erklärt immernoch nicht warum der string leer ist...

[Edit]
*an den Kopf fass*

ist ja klar das es nicht geht....
*kreischend den kopf vor die wand hau*

toll wie kann man nur so blööd sein? ich werde darüber nicht fertig.... ich schreibe nun etwas über ein jahr und bekomme die großen, übersichtilichen, über meheren zeilen fehler nicht mit

nein... und ich habe mir den text jetzzt nicht mal da bei angesehen.... ich habe mir nur die frage gestellt warum nur eine datei gepackt wurden ist...

naja danke kiffi

[Edit 2]
okay es geht jetzt das mehere midi dateien gepackt werden... auch der string ist nicht leer der für die text dateien ist... aber die text datei wird immernoch nicht gepackt :/

hier noch mal der geänderte codebereich:

Code: Alles auswählen

      If GetGadgetText(15) <> "C:\" Or GetGadgetText(16) <> "C:\" Or GetGadgetText(17) <> "C:\" Or GetGadgetText(18) <> "C:\" Or GetGadgetText(19) <> "C:\" Or GetGadgetText(20) <> "C:\"
        If OpenInfo$
          OpenWindow(2,0,0,100,30,"Warten...",#PB_Window_BorderLess|#PB_Window_WindowCentered)
          CreateGadgetList(WindowID(2))
          TextGadget(21,5,5,90,20,"Bitte Warten...")
          Date$ = FormatDate("%yyyy.%mm.%dd[%ii]", Date())
          ArchiveFileName.s = Name.s + " " + Date$ + ".zip"
          PureZIP_Archive_Create(ArchiveFileName.s,  #APPEND_STATUS_CREATE)        
          If FindString(GetGadgetText(15),".mid",0) Or FindString(GetGadgetText(15),".MID",0) Or FindString(GetGadgetText(15),".midi",0) Or FindString(GetGadgetText(15),".MIDI",0)
            PureZIP_Archive_Compress(GetGadgetText(15), #False) 
          EndIf
          If FindString(GetGadgetText(16),".mid",0) Or FindString(GetGadgetText(16),".MID",0) Or FindString(GetGadgetText(16),".midi",0) Or FindString(GetGadgetText(16),".MIDI",0)
            PureZIP_Archive_Compress(GetGadgetText(16), #False) 
          EndIf
          If FindString(GetGadgetText(17),".mid",0) Or FindString(GetGadgetText(17),".MID",0) Or FindString(GetGadgetText(17),".midi",0) Or FindString(GetGadgetText(17),".MIDI",0)
            PureZIP_Archive_Compress(GetGadgetText(17), #False) 
          EndIf
          If FindString(GetGadgetText(18),".mid",0) Or FindString(GetGadgetText(18),".MID",0) Or FindString(GetGadgetText(18),".midi",0) Or FindString(GetGadgetText(18),".MIDI",0)
            PureZIP_Archive_Compress(GetGadgetText(18), #False) 
          EndIf
          If FindString(GetGadgetText(19),".mid",0) Or FindString(GetGadgetText(19),".MID",0) Or FindString(GetGadgetText(19),".midi",0) Or FindString(GetGadgetText(19),".MIDI",0)
            PureZIP_Archive_Compress(GetGadgetText(19), #False) 
          EndIf
          If FindString(GetGadgetText(20),".mid",0) Or FindString(GetGadgetText(20),".MID",0) Or FindString(GetGadgetText(20),".midi",0) Or FindString(GetGadgetText(20),".MIDI",0)
            PureZIP_Archive_Compress(GetGadgetText(20), #False) 
          EndIf
          If OpenInfo$
            Debug OpenInfo$
            PureZIP_Archive_Compress(Textfile$, #False)
          EndIf
          PureZIP_Archive_Close()
Bild
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

Hi,

Ich habe deinen code jetzt zwar nicht getestet, aber beim durchsehen ist mir etwas aufgefallen:

FindString(GetGadgetText(15),".mid",0)

solltest du besser in...

FindString(GetGadgetText(15),".mid",1)

abändern. Den Count also auf "1" statt "0" setzten. Denn das erste zeichen
eines Strings beginnt immer bei "1" und nicht bei "0". Desweiteren empfehle ich dir
GetGadgetText() nicht jedesmal erneut aufzurufen. Benutze stattdessen
lieber einen String.

Also z.b.:

TXT$ = GetGadgetText(15)
...
...
FindString(TXT$, ".mid", 1)

Damit wird das ganze zumindest schonmal übersichtlicher & kürzer. :wink:
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

@al90
danke für den tip aber ich komme ganz gut damit klar ;) und probleme hatte ich noch nie bei "FindString(Getgadget(0),"String",0)...


gut ich weis das du nur helfen wolltest aber dange auch wenn mein problem noch nicht behoben wurden ist...
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Magix-Soft <Kain> hat geschrieben:danke für den tip aber ich komme ganz gut damit klar ;) und probleme hatte ich noch nie bei "FindString(Getgadget(0),"String",0)...
Dein Code birgt ein gewisses Fehlerpotential:

Code: Alles auswählen

C:\lala\ich_bin_gar_kein.mid.wav
... würde gepackt, obwohl es ganz eindeutig eine Wave-Datei ist.

Code: Alles auswählen

C:\lala\ich_bin_ein.MiD
... würde nicht gepackt (beachte gross- und kleinschreibung)

Ausserdem würde ich vor dem Packen immer mit FileSize() testen, ob die
angegebene Datei überhaupt vorhanden ist.

Was hälste denn davon?

Code: Alles auswählen

PureZIP_Archive_Create(ArchiveFileName.s,  #APPEND_STATUS_CREATE)       
[...]
For GadgetCounter = 15 To 20
  If FileSize(GetGadgetText(GadgetCounter))>-1
    Extension = LCase(GetExtensionPart(GetGadgetText(GadgetCounter)))
    If Extension = "mid" Or Extension = "midi"
      PureZIP_Archive_Compress(GetGadgetText(GadgetCounter), #False)
    EndIf
  EndIf
Next  
[...]
PureZIP_Archive_Close()
Magix-Soft <Kain> hat geschrieben:auch wenn mein problem noch nicht behoben wurden ist.
Du testest auf OpenInfo$ und komprimierst Textfile$? Seltsam...

Code: Alles auswählen

If OpenInfo$
  Debug OpenInfo$
  PureZIP_Archive_Compress(Textfile$, #False)
EndIf
Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

So ich habe jetzt mal was vorbereitet. Damit sollte es gehen.

Code: Alles auswählen

Procedure.l AddFileToZIP(Archive$, File$, storepath.l=#False)

  Protected f$, state.l, x=-1

  If FileSize(Archive$)>0
    state=#APPEND_STATUS_ADDINZIP
  Else
    state=#APPEND_STATUS_CREATE
  EndIf

  If storepath=#False
    f$=GetFilePart(File$)
  Else
    f$=File$
  EndIf

  If FileSize(File$)>0
    If PureZIP_FindFile(Archive$, f$, storepath)=-1 ; <<< --- Doppeltes Packen vermeiden!
      If PureZIP_Archive_Create(Archive$, state)
        x = PureZIP_Archive_Compress(File$, storepath)
        PureZIP_Archive_Close()
      EndIf
    EndIf
  EndIf

  ProcedureReturn x

EndProcedure


st = AddFileToZIP("c:\My_ZIP_Archive.zip","c:\Windows\System32\Calc.exe")

If st = #UNZ_OK
  MessageRequester("Info", "Alles Klar, Datei wurde Gepackt!", #MB_OK|#MB_ICONINFORMATION)
Else
  MessageRequester("Info", "Es ist ein Fehler aufgetreten!", #MB_OK|#MB_ICONWARNING)
EndIf
Als letzten Parameter der Proc einfach #True oder #False angeben,
jenachdem ob man die Verzeichniss-Struktur mit packen will oder nicht.
Keine angabe bedeutet OHNE verzeichnisse packen. (Default Einstellung)
Benutzeravatar
Tsuki-Namida
Beiträge: 633
Registriert: 17.11.2005 13:27
Kontaktdaten:

Beitrag von Tsuki-Namida »

okay danke kiffi und al90 es geht super :) *endlich*...

aber zu deinem Beispiel kiffi:
ja danke aber das ist irgentwo klar... deshalb habe ich einen maxiaml upload von 1,5mb okay und ggf wenn eine andere datei dabei ist kann ich das ggf. immer noch löschen ;)
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Magix-Soft <Kain> hat geschrieben:ja danke aber das ist irgentwo klar... deshalb habe ich einen maxiaml upload von 1,5mb okay und ggf wenn eine andere datei dabei ist kann ich das ggf. immer noch löschen ;)
ja, dann frag ich mich allerdings, warum Du überhaupt eine Überprüfung
machst. Wenn schon eine Prüfung erfolgt, dann sollte sie doch einigermaßen
wasserdicht sein. (Zumal das 'Abdichten' so wenig Aufwand bedeuten würde).

Nun gut, ist nicht mein Bier.

Grüße ... Kiffi
a²+b²=mc²
Antworten