Can I use EXISTS using jokers?

Discuss any general programming issues here
Post Reply
Bugala
Posts: 1168
Joined: Sun Feb 14, 2010 7:11 pm

Can I use EXISTS using jokers?

Post by Bugala »

I am having here a situation where I want to check if certain graphic file exists or not. However, I don't want to know in what format that GFX is in.

therefore, is there a way to do something like:

Code: Select all

if exists("filename."..wildcard)
Matchpattern has this * to be used as a wildcard, but is there one for Exists()?
User avatar
msu
Posts: 71
Joined: Mon Jun 13, 2016 11:36 am
Location: Sinzig/Germany

Re: Can I use EXISTS using jokers?

Post by msu »

I would solve it like this:

Code: Select all

formats = {".gif", ".png", ".jpg"}

file$ = "FILE"

For a = 0 to TableItems(formats) -1
	If Exists(file$ .. formats[a])
		Print("File exists!")
		WaitLeftMouse
		End
	EndIf
Next

Print("File does not exist!")
WaitLeftMouse
End
User avatar
jPV
Posts: 600
Joined: Sat Mar 26, 2016 10:44 am
Location: RNO
Contact:

Re: Can I use EXISTS using jokers?

Post by jPV »

I'm not sure if wildcards are practical with an Exists function... don't you still want to know exact files?

But anyway, here's my take :)

Code: Select all

; An "Exists" function which works with (MatchPattern) wildcards, and is case insensitive.
Function p_Exists(f$)
    Local d$ = PathPart(f$)
    f$ = LowerStr(FilePart(f$))
    For s$,t In DirectoryItems(d$)
        If MatchPattern(LowerStr(s$), f$) Then Return(True)
    Next
EndFunction

; Some examples:
If p_Exists("ram:env") Then DebugPrint("ram:env exists!") Else DebugPrint("doesn't exist")
If p_Exists("ram:clip*") Then DebugPrint("ram:clip* exists!") Else DebugPrint("doesn't exist")
If p_Exists("ram:*boards") Then DebugPrint("ram:*boards exists!") Else DebugPrint("doesn't exist")
If p_Exists("ram:test*file") Then DebugPrint("ram:test*file exists!") Else DebugPrint("doesn't exist")
If p_Exists("*.hws") Then DebugPrint("*.hws exists!") Else DebugPrint("doesn't exist")
Bugala
Posts: 1168
Joined: Sun Feb 14, 2010 7:11 pm

Re: Can I use EXISTS using jokers?

Post by Bugala »

@JPV Thanks, was thinking a solution something like that myself too, just didn't realize it would be so easy to do actually until saw how your code took only a couple of lines.

The point about not needing to know the file format was two different ideas. First one was that I was basically hoping an exists function that would use wildcard, but yet return the full name of the found file.

Another possibility was that I was thinking of this MODding option in which case that part of code wouldn't need to know the full file name, but only if there is such a file existing with any suffix. Idea being that it was loading button graphics and then depending if there are for example highlight graphics existing for that button, would depend if button would have highlight, and that specific function that was making the button didn't need to know the filename yet, it only needed to know if such thing existed or not.

@msu

Thanks for your code too. Was thinking that one as an option too, but decided to abandon it since I wanted it to support any gfx format that Hollywood supports, in the future too, and I didn't want to start maintaining/updating that list in the future but wanted a solution that would work by simply compiling with a future Hollywood version.
Post Reply