Hoe weet ik of een gekozen bestand bestaat

Geef hier je beste Liberty BASIC tips door. (Hier geen hulp vragen)

Moderators: anthonio, Abcott

Hoe weet ik of een gekozen bestand bestaat

Berichtdoor Gordon » do mei 17, 2007 2:31 pm

Hier bestaan verschillende listings voor.
Hier volgt een Windows versie.

Code: Selecteer alles
filedialog "vind een file","*.*",a$

If PathExists(a$) Then
    print "Bestand is bestaand!"
Else
    print "Nieuw bestand."
End If

end

Function PathExists(pathSpec$)
    struct PathExistsWFD, x as char[318] 'blank _WIN32_FIND_DATA struct
    calldll #kernel32, "FindFirstFileA", pathSpec$ as ptr, PathExistsWFD as struct, hfind as ulong
    calldll #kernel32, "FindClose", hfind as ulong, ret as boolean
    If hfind <> _INVALID_HANDLE_VALUE Then PathExists = 1
End Function



Gordon.
Avatar gebruiker
Gordon
Site Admin
 
Berichten: 684
Geregistreerd: zo mei 22, 2005 12:50 am

Re: Hoe weet ik of een gekozen bestand bestaat

Berichtdoor anthonio » ma mei 21, 2007 12:33 am

Gordon schreef:Hier bestaan verschillende listings voor.
Hier volgt een Windows versie.

Code: Selecteer alles
filedialog "vind een file","*.*",a$

If PathExists(a$) Then
    print "Bestand is bestaand!"
Else
    print "Nieuw bestand."
End If

end

Function PathExists(pathSpec$)
    struct PathExistsWFD, x as char[318] 'blank _WIN32_FIND_DATA struct
    calldll #kernel32, "FindFirstFileA", pathSpec$ as ptr, PathExistsWFD as struct, hfind as ulong
    calldll #kernel32, "FindClose", hfind as ulong, ret as boolean
    If hfind <> _INVALID_HANDLE_VALUE Then PathExists = 1
End Function



Gordon.


In JB kon je met de functie FileExist(path$) zien of een bestand bestond.
Is dit weggelaten in LB?
zo ja, dan ben je wrs verplicht een API te raadplegen?
Dual boot: Ubuntu 8.04 - WIndows XP SP2 (via VMware) - Windows Vista 32bit - Toshiba L40 - Dual Core @ 1,76GHz - 1GB RAM - 120GB HDD - VDSL Connection
Avatar gebruiker
anthonio
 
Berichten: 281
Geregistreerd: zo mei 20, 2007 9:58 pm

Berichtdoor Abcott » ma mei 21, 2007 10:11 pm

Hoi,

Ik ga dit nog uitzoeken.
Ja, vroeger deed ik alles met de native commands
van LB (JB).

Het lijkt alsof je anders alleen wat aan LB hebt,
maar ik kan alles gewoon in Just BASIC.

Abcott
Avatar gebruiker
Abcott
 
Berichten: 115
Geregistreerd: wo mei 25, 2005 9:58 pm

Re: Hoe weet ik of een gekozen bestand bestaat

Berichtdoor glpape » zo mei 06, 2012 1:37 am

Ik ben in de hoofdstad van Malawi, met een paar dagen goeie Internet access en ik kwam dit tegen: het is alweer van een tijdje geleden maar omdat er geen antwoord komt op de vraag hoe hoe je dit met Lbty's eigen commando's doet hierbij de 2 functies die ikzelf hiervoor gebruik.

Lbty gebruikt soms apart de padnaam en filenaam, en soms samen in een lange filenaam (? lange padnaam).

De eerste functie heeft padnaam en filenaam apart en gebruikt het <Files> commando om te zien of een file al bestaat.
Ik heb er niet hard over hoeven nadenken want dit wordt uitgelegd in de helpfile onder <Files> .
Voor DefaultDir$ mag je ook DD$ typen, ruim 70% minder toetsaanslagen.

Code: Selecteer alles
Function ife(path$, filename$)              ' IfFileExists   DD$ for DefaultDir
dim info$(10,10)                            ' note: path, filename in dble quotes
if path$=DD$ then path$ = DefaultDir$
files path$, filename$, info$()
ife = val(info$(0,0))                       ' returns 1 if file exists, otherwise 0
End Function


De tweede functie gebruikt de lange filenaam zoals je die bv krijgt van <Filedialog>. De functie zoekt de laatste backslash in de lange filenaam en de text daarvoor is dan de padnaam, de text erna de filenaam; en dan weer het <Files> commando.
Ik heb er niet hard over hoeven nadenken want dit wordt zo voor gedaan in de Liberty BASIC 4 Companion van Alyce Watson.

Code: Selecteer alles
Function ifel(lpn$)                         ' IfFileExistsLongpathname
i = len(lpn$)
  while mid$( lpn$, i, 1 ) <> "\"
    i = i-1
  wend
dim info$(10,10)
files left$(lpn$,i), mid$(lpn$, i+1), info$()
ifel = val(info$(0,0))                      ' returns 1 if file exists, otherwise 0
End Function


Vr groet,

George Pape.
glpape
 
Berichten: 83
Geregistreerd: za nov 08, 2008 5:32 pm


Keer terug naar Tips en informatie

Wie is er online

Gebruikers op dit forum: Geen geregistreerde gebruikers. en 1 gast

cron