[VB] Prog laten controleren of die op c:\ staat

Pagina: 1
Acties:
  • 241 views sinds 30-01-2008
  • Reageer

  • Facer
  • Registratie: Januari 2002
  • Niet online

Facer

Ken net.....

Topicstarter
Mijn programma kan op de root van de c:\ niet werken maar moet in een dir. staan maar hoe kan ik het programma dit laten controleren ?

Want
code:
1
2
3
If App.Path = "C:\" Then
   MsgBox "Staat op c:\"
End If

Werkt helaas niet :'(

  • whoami
  • Registratie: December 2000
  • Laatst online: 20:22
En waarom werkt het niet?
Kijk wat er in die AppPath staat en debug je programma eens.

https://fgheysels.github.io/


  • Facer
  • Registratie: Januari 2002
  • Niet online

Facer

Ken net.....

Topicstarter
Ik krijg dan een RunTime Error '70':
Permission Denied

Dit komt denk ik omdat het programma een bestand aan het maken ben op de c:\ die test.txt heet maar hij leest ook uit test.txt daarom gaat die de fout in

Hij slaat vast op deze regel:
code:
1
FileCopy App.Path & "\test.txt", "c:\test.txt"

  • Aerox.2000
  • Registratie: Februari 2001
  • Laatst online: 13-05 08:57
Op vrijdag 12 juli 2002 14:04 schreef facer het volgende:
Mijn programma kan op de root van de c:\ niet werken maar moet in een dir. staan maar hoe kan ik het programma dit laten controleren ?

Want
code:
1
2
3
If App.Path = "C:\" Then
   MsgBox "Staat op c:\"
End If

Werkt helaas niet :'(
Dit werkt bij mij wel (win 98)
Op vrijdag 12 juli 2002 14:08 schreef facer het volgende:
Ik krijg dan een RunTime Error '70':
Permission Denied

Dit komt denk ik omdat het programma een bestand aan het maken ben op de c:\ die test.txt heet maar hij leest ook uit test.txt daarom gaat die de fout in

Hij slaat vast op deze regel:
code:
1
FileCopy App.Path & "\test.txt", "c:\test.txt"
moet je niet eerst het bestand sluiten?
code:
1
Close openfile

Verwijderd

die app.path en die filecopy hebben niks met elkaar te maken . . . je app.path moet altijd aangeven waar ie staat . . dus je eerste code die je gepost hebt is goed...

btw : waar krijg je die acces denied ??? die kun je nooit krijgen als je de inhoud van app.path controleert.

ps : waarom mag je programma niet in c:\ werken ????

Verwijderd

batchfile:
code:
1
2
3
4
5
6
@echo off

if exist c:\bestand.ext echo bestand staat in de root
if not exist c:\bestand.ext echo bestand staat niet in de root

pause

Of is dit te simpel :?

  • Skinny
  • Registratie: Januari 2000
  • Laatst online: 25-07 18:17

Skinny

DIRECT!

Op vrijdag 12 juli 2002 14:08 schreef facer het volgende:

Hij slaat vast op deze regel:
code:
1
FileCopy App.Path & "\test.txt", "c:\test.txt"
Als App.Path inderdaad C: bevat krijg je Permission Denied, want een bestand naar zichzelf kopieren gaat niet.

Zet voor bovenstaande regel eens
code:
1
Msgbox App.Path

App.Path is niet helemaal consistent volgens mij, want als ik een programma in de "root" opstart geeft dit bij mij "C:\" terug, terwijl het "C:\Subdir" (zonder \) teruggeeft in een directory.

Hier moet je dus eerst even goed op checken.

SIZE does matter.
"You're go at throttle up!"


  • ddkiller0900
  • Registratie: Juli 2001
  • Laatst online: 22-08 19:34
wat is precies je bedoeling en wat doet je programma? Gaat het gewoon om een bestand te kopiëren of ... :?

edit:
[quote]
If App.Path = "C:\" Then
MsgBox "Staat op c:\"
End If
[/quote]

Deze code klopt toch :?

  • shades
  • Registratie: September 2001
  • Laatst online: 10-08 15:01

shades

huh ?

misschien deze :
code:
1
2
3
if lcase(left(app.path,2)) = "c:" then
   doe dingen
end if

https://k1600gt.nl


  • PolarBear
  • Registratie: Februari 2001
  • Niet online
Volgens mij retourneerd app.path als je programma in de root van c zet "c:" dus zonder slash.

Probeer anders dit
code:
1
debug.print app.path

of
code:
1
msgBox app.path

Kan je het controleren.

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 09:31

Crazy D

I think we should take a look.

1 woord: case sensitive
gooi eens een lcase$() om app.path heen en vergelijk 'm daarna met een kleine c :) (of ucase$ en een grote C :P)

[edit]
overigens vind ik het een uitermate brakke methode om keihard een \ achter app.path te zetten, dat gaat idd fout als het programma in de root van een schijf staat. Stop dat ding in een variabele, check of het laatste teken een \ is en zo niet, plak 'm eraan vast. Je app mag dan misschien niet in de root van C staan, maar in de root van D mag ie blijkbaar wel en dan gaat het als nog fout.

Exact expert nodig?


Verwijderd

Op vrijdag 12 juli 2002 15:02 schreef Crazy_D het volgende:
1 woord: case sensitive
gooi eens een lcase$() om app.path heen en vergelijk 'm daarna met een kleine c :) (of ucase$ en een grote C :P)
Of als je t helemaal goed doet gebruik je StrComp met vbTextCompare, da's nog n stuk sneller :)

  • shades
  • Registratie: September 2001
  • Laatst online: 10-08 15:01

shades

huh ?

Op vrijdag 12 juli 2002 14:48 schreef shades het volgende:
misschien deze :
code:
1
2
3
if lcase(left(app.path,2)) = "c:" then
   doe dingen
end if
Hier, direct gekopied uit immediate window:
code:
1
2
3
4
5
? app.Path
E:\Program Files\DevSchuur\VB98

? lcase(left(app.Path,2))
e:

https://k1600gt.nl


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

code:
1
2
3
4
5
6
7
8
Private Function Appdir() As String
    '//if AppDir = NOT the root of the HD  add "\", else don't add the slash
    If Right$(App.Path, 1) <> "\" Then
      Appdir = App.Path & "\"
    Else
      Appdir = App.Path
    End If
End Function

Als je nu je App.paths in je project vervangt door dit, en ipv overal dus:

app.path & "\test.bmp"

AppDir & "test.bmp"

maakt, werkt je programma wel in de root.

Verwijderd

Op vrijdag 12 juli 2002 18:21 schreef 41.6C.6D.61.72 het volgende:
code:
1
2
3
4
5
6
7
8
Private Function Appdir() As String
    '//if AppDir = NOT the root of the HD  add "\", else don't add the slash
    If Right$(App.Path, 1) <> "\" Then
      Appdir = App.Path & "\"
    Else
      Appdir = App.Path
    End If
End Function

Als je nu je App.paths in je project vervangt door dit, en ipv overal dus:

app.path & "\test.bmp"

AppDir & "test.bmp"

maakt, werkt je programma wel in de root.
Je kunt het beter een keer in een Public variable zetten, zo gaat ie iedere keer opnieuw bekijken of de slash toegevoegd moet worden.

  • Facer
  • Registratie: Januari 2002
  • Niet online

Facer

Ken net.....

Topicstarter
Op vrijdag 12 juli 2002 18:21 schreef 41.6C.6D.61.72 het volgende:
code:
1
2
3
4
5
6
7
8
Private Function Appdir() As String
    '//if AppDir = NOT the root of the HD  add "\", else don't add the slash
    If Right$(App.Path, 1) <> "\" Then
      Appdir = App.Path & "\"
    Else
      Appdir = App.Path
    End If
End Function

Als je nu je App.paths in je project vervangt door dit, en ipv overal dus:

app.path & "\test.bmp"

AppDir & "test.bmp"

maakt, werkt je programma wel in de root.
Thnx zal dit doen.

P.s. helaas voor de late reactie dit kwam omdat me internet de hele middag eruit lag :'(

Aleen nu kan die dus niet die filecopy doen maarja dan zeg ik er wel ff een IF'je boven dat als die op de C staat dat die niet hoeft te coppieeren

  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 09:31

Crazy D

I think we should take a look.

Op vrijdag 12 juli 2002 18:46 schreef facer het volgende:
Aleen nu kan die dus niet die filecopy doen maarja dan zeg ik er wel ff een IF'je boven dat als die op de C staat dat die niet hoeft te coppieeren
Check dan niet of ie op c: staat, maar of bron- en doeldirectory gelijk zijn...

Exact expert nodig?


  • Sponge
  • Registratie: Januari 2002
  • Laatst online: 28-08 17:06

Sponge

Serious Game Developer

Op vrijdag 12 juli 2002 18:26 schreef dev het volgende:

[..]

Je kunt het beter een keer in een Public variable zetten, zo gaat ie iedere keer opnieuw bekijken of de slash toegevoegd moet worden.
Komt ook uit een class, normaal is dit een eenmalige actie om voor een property, maar het leek me handig om hem snel even bij te werken door er een functie van te maken. :)

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 21-08 17:14
Op vrijdag 12 juli 2002 14:08 schreef facer het volgende:
Hij slaat vast op deze regel:
code:
1
FileCopy App.Path & "\test.txt", "c:\test.txt"
Dat is ook een slecht idee. C:\ is geen directory die een programma zomaar moet gebruiken. Ten eerste weet je niet of die bestaat, ten tweede weet je niet of je er mag schrijven, en ten derde wordt c:\ een rotzooi als iedereen er maar naar schrijft. Dan ga je terug naar de tijden van DOS 1.0 |:(

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


  • Crazy D
  • Registratie: Augustus 2000
  • Laatst online: 09:31

Crazy D

I think we should take a look.

Op maandag 15 juli 2002 10:35 schreef MSalters het volgende:
Ten eerste weet je niet of die bestaat, ten tweede weet je niet of je er mag schrijven, en ten derde wordt c:\ een rotzooi als iedereen er maar naar schrijft.
Je kan er op zich wel vanuit gaan dat c: bestaat en dat je hierin mag schrijven, windows security is niet zo goed dat je een gebruiker geen schrijfrechten kunt geven op c:, maar...
Dan ga je terug naar de tijden van DOS 1.0 |:(
... daar ben ik het volledig mee eens. Maak dan een datadir oid, of laat een gebruiker een directory selecteren. (en een beetje error handling eromheen kan geen kwaad...)

Exact expert nodig?

Pagina: 1