webForumDet fria alternativet

Filhantering

5 svar · 263 visningar · startad av Brian

BrianMedlem sedan sep. 2001502 inlägg
#1

Hejsan!

Jag skapar en fil med namnet 'c:\temp.txt' och registrerar värden i filen.

Vad ska jag använda för funktion för att se ifall en filen redan finns på hårddisken. så att jag 9inte skriver över tidigare version?

//Brian

[Redigerat av Brian den 18 okt 2001]

SPiNMedlem sedan mars 20007 896 inlägg
#2

En lite enkel funktion som returnerar true eller false:

Private Function FileExists(ByVal strFile As String) As Boolean
    Dim iLength As Integer
    
    On Error Resume Next
    iLength = Len(Dir$(strFile))
    
    If Err Or iLength = 0 Then
        FileExists = False
    Else
        FileExists = True
    End If
End Function

------------------
SPiN, bjorne.w@telia.com

-- Den som går i andras fotspår kommer aldrig först --

BrianMedlem sedan sep. 2001502 inlägg
#3

Tack för svaret!

Hur gör jag, vilket kommando skall jag använda för att söka igenom användarens olika enheter?

I nedanstående kod, så går koden endast mot C.

/Brian

<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
filvag = Inputbox$("Ange lagrinsplats för fil: ","Information","C:\export.txt")

pathname= "C:\\\*.\*"
filename=Dir$(pathname,0)

Do While filename\<\>""
	filename=Dir$()
	If filename= Mid(filvag,4,Len(filvag)) Then
		box=Msgbox("Filen " + filvag + " finns redan! "+ Chr$(13)+ "Väljer du OK så skrivs filen över. Välj avbryt för att få möjlighet att lagra värdena i en anna n fil.",65,"Information")
		If box=2 Then 
			Exit Sub
		End If
	End If
		Loop

[Redigerat av Brian den 18 okt 2001]

fredrikMedlem sedan dec. 19991 072 inlägg
#4

För att kolla vilka enheter som finns på klienten kan du göra på 2 sätt.

1. Det enklast men också det osäkraste är om du använder FSO, då kan du helt enkelt loopa mellan A - Z och sen använda "DriveExists" för att kolla om enheten finns.

ex:
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
for lngI = 97 to 122
if fso.DriveExists(chr(lngI)) = true then
'enheten finns
end if
next 'lngI

På detta sätt får du reda på om enheten finns eller inte. Vad du däremot inte vet är om enheten är mobil (diskett och dyl.), om det är en lokal hårddisk eller om enheten är uppmappad.

För att få reda på vilken slags enhet det är så måste man använda API.
Ex. OBS, exemplet kräver att du lägger till en "listbox", du kan sen lätt modda skriptet och använda det hur du vill.
<font size="1" face="Verdana, Arial, Helvetica, sans-serif">Kod:<font size="1" face="Verdana, Arial, Helvetica, sans-serif" color="#666600">
'i deklarationen
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

Private Enum DriveTypes
DRIVE_UNDERTIMINED = 0
DRIVE_NONEXISTANT = 1
DRIVE_REMOVABLE = 2
DRIVE_FIXED = 3
DRIVE_REMOTE = 4
DRIVE_CDROM = 5
DRIVE_RAMDISK = 6
End Enum

Private Sub Form_Load()
Dim sDrive As String, iDrive As Integer
Dim dt As DriveTypes

For iDrive = vbKeyA To vbKeyZ
sDrive = Chr(iDrive) & ":\"
dt = GetDriveType(sDrive)
Select Case dt
Case DRIVE_REMOVABLE
List1.AddItem sDrive & " = REMOVABLE DRIVE"
Case DRIVE_FIXED
List1.AddItem sDrive & " = FIXED DRIVE"
Case DRIVE_REMOTE
List1.AddItem sDrive & " = REMOTE DRIVE"
Case DRIVE_CDROM
List1.AddItem sDrive & " = CDROM"
Case DRIVE_REMOTE
List1.AddItem sDrive & " = RAMDISK"
Case DRIVE_NONEXISTANT
List1.AddItem sDrive & " = NO DRIVE!"
Case DRIVE_UNDERTIMINED
List1.AddItem sDrive & " = DRIVE UNDERTIMINED"
End Select
Next iDrive
End Sub

Detta är alltså det sätt som ger pålitligast listning och är även det som jag rekommenderar dig att använda.

------------------
Fredrik Klarqvist
f.klarqvist@spray.se
http://server.webwerkstaden.se/fredde/

BeatboxMedlem sedan okt. 20013 217 inlägg
#5

Jag skapar en fil med namnet 'c:\temp.txt' och registrerar värden i filen.

Vad ska jag använda för funktion för att se ifall en filen redan finns på hårddisken. så att jag 9inte skriver över tidigare version?

Bästa sättet är att ta in "Microsoft Scripting Runtime" som referens och sedan skapa FileSystemObject.

// BeatBox

BrianMedlem sedan sep. 2001502 inlägg
#6

Tack för tipsen!

Ska sätta mig och prova lite :)

//Brian

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)