Nach 99 Images is schluss Oo

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Nach 99 Images is schluss Oo

Beitrag von sen-me »

Code: Alles auswählen

If ExamineDirectory(0, folder, "") = 0
     Error(1, 7)
    EndIf
    
    While NextDirectoryEntry(0)
     If DirectoryEntryType(0) = #PB_DirectoryEntry_File
      If LCase(GetExtensionPart(folder+DirectoryEntryName(0))) = format
       If LoadImage(0, folder+DirectoryEntryName(0)) = 0
        Error(1, 8)
       EndIf
       
       ResizeImage(0, width, height)
       
       If yes = 1 : savename = RSet(Str(i), 2, "0")
       Else : savename = Str(i) : EndIf
       
       While FileSize(save+front+savename+"."+saveformat) > -1
        i + 1
        
        If yes = 1 : savename = RSet(Str(i), 2, "0")
        Else : savename = Str(i) : EndIf
       Wend
       
       If saveformat = "jpg"
        If SaveImage(0, save+front+savename+"."+saveformat, plugin, 10) = 0
         Error(1, 9)
        EndIf
       Else
        If SaveImage(0, save+front+savename+"."+saveformat, plugin) = 0
         Error(1, 10)
        EndIf
       EndIf
       
       FreeImage(0)
      EndIf
     EndIf
    Wend
    
    FinishDirectory(0)
Nach 99 Bildern hängt sich das Prog auf, wieso?
Bild
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

>> Nach 99 Bildern hängt sich das Prog auf, wieso?
Bei mir funktioniert der Code überhaupt nicht :cry:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Nach 99 Images is schluss Oo

Beitrag von Kiffi »

Code: Alles auswählen

savename = RSet(Str(i), 2, "0")
das geht ab i >= 100 in die Hose.

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

Gibts da auch ne Erklärung wieso und ob man das Problem beheben / anders machen kann?

EDIT:
Ah ich verstehe, d.h. es kommt zu einer Unendlichschleife, weil er immer wieder von 10 bis 99 prüft ob eine Datei da ist.
Demnach müsste dies ja gehen:

Code: Alles auswählen

If yes = 1 And i < 10 : savename = RSet(Str(i), 2, "0") 
       Else : savename = Str(i) : EndIf 
        
       While FileSize(save+front+savename+"."+saveformat) > -1 
        i + 1 
        
        If yes = 1 And i < 10 : savename = RSet(Str(i), 2, "0") 
        Else : savename = Str(i) : EndIf 
       Wend
Bild
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

warum so umständlich?
haben die dateien nun führende nullen oder nicht?

wenn ja, bau bei RSet soviele stellen ein, wie's haben soll.
also, wenn du über hundert hast, dann verwende dreistellig,
bei über tausend vierstellig.

wenn nein, lass alle führenden nullen weg, also auch die im <10 bereich.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Wie wäre es mit

Code: Alles auswählen

savename = RSet(Str(i), 3, "0")
Sollte dann bis 999 laufen :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

ts-soft hat geschrieben:Wie wäre es mit

Code: Alles auswählen

savename = RSet(Str(i), 3, "0")
Sollte dann bis 999 laufen :mrgreen:
... und dann kommt bald der nächste Thread: "Nach 999 Images is schluss Oo"

;-)

@sen-me: Setz Dich mal ein wenig mit den in PB eingebauten
Debugger-Funktionalitäten auseinander. Mit Verwendung von Calldebugger
und Variablenkontrolle und / oder Debug hättest Du das von selber
rauskriegen können.

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