[VB6]Kan file niet openen vanwege spatie in filename

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

  • WoutF
  • Registratie: Maart 2000
  • Laatst online: 11:28

WoutF

Hoofdredacteur
Topicstarter
Ik ben de hele middag al bezig met een simpel FTP proggie te fixen die het volgende moet doen.

Je right clicked op een file, klikt dan op de optie QuickFTP
Dan upload het proggie de file naar een vooraf ingevulde server en plaatst dan de locatie van de file op je clipboard.

leek me wel handig als je ff snel een plaatje wilt uppen voor in een forum post oid.

afijn, het werkt dus alleen als ik het bij een bestand doe waar in het pad geen spaties staan

dus
c:\blaat.txt
kan ik wel uppen
maar
c:\bla at.txt
kan dus niet

Dan krijg ik dus een error dat hij de file niet kan openen. Heeft iemand een idee wat ik met die string moet doen zodat hij hem wel kan openen, hij struikelt dus over die spatie

  • Apache
  • Registratie: Juli 2000
  • Laatst online: 12:24

Apache

amateur software devver

"c:\bla at.txt" :?

misschien kan je best even posten hoe je het probeert te openen.

If it ain't broken it doesn't have enough features


  • WoutF
  • Registratie: Maart 2000
  • Laatst online: 11:28

WoutF

Hoofdredacteur
Topicstarter
Kijk. De file die geupload moet worden wordt opgegeven via de commandline. Ofwel via het SendTo menu, ofwel door het bestand op de EXE te droppen, het effect is het volgende

"quickftp.exe" c:\blaat.txt

Hetgeen achter quickftp.exe vang in binnen VB af met de variabele 'Command'
Dus 'Command' bevat de locatie naar het bestand wat ik wil uploaden.
code:
1
2
3
4
5
6
7
8
'Maak verbinding met Ftp en dergelijke, al gedaan

   Ftp1.SrcFilename = Command
   
   Dim Dst() As String
   Dst = Split(Ftp1.SrcFilename, "\")
   Ftp1.DstFilename = Dst(UBound(Dst))
   Ftp1.PutFile SrcFilename, DstFilename


Het uploaden gaat via een COM object wat ik ergens gevonden heb want met winsock liep ik vast. Dit werkt dus allemaal perfect als het path in 'Command' geen spatie's bevat. Zodra er een spatie inzit krijg ik een error dat hij de file niet kan openen

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

Sponge

Serious Game Developer

Zoek op de "GetShortName" api. Ik zocht mijn eerder geposte code al, maar ik zie niets in oude topics.. maar dat zal wel een bekend probleem zijn (denk ik?)

Verwijderd

goh . .hoe zou dat nou komen . . ."als ik er een spatie tussen zet, krijg ik een error" .. c:\bl aat.txt zijn 2 file c:\bl is er 1 een aat.txt is er 1 . . dus ja . . dat gaat fout

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

Crazy D

I think we should take a look.

Ff in de registry, waar je je progje in het rechtemuisklik menuutje hebt gepropt, "%1" toevoegen zodat de filenaam incl. spaties tussen " en " wordt doorgegeven, en dan is het wel 1 (geldige) file.
App.exe "%1" dus.

Exact expert nodig?


  • WoutF
  • Registratie: Maart 2000
  • Laatst online: 11:28

WoutF

Hoofdredacteur
Topicstarter
Verwijderd schreef op 03 augustus 2002 @ 12:57:
goh . .hoe zou dat nou komen . . ."als ik er een spatie tussen zet, krijg ik een error" .. c:\bl aat.txt zijn 2 file c:\bl is er 1 een aat.txt is er 1 . . dus ja . . dat gaat fout
Dat dacht ik dus ook maar als ik Command echo, dan zie ik het gehele pad in een string tussen " "
bijv. "c:\documents and settings\blaat.txt"
Crazy_D schreef op 03 augustus 2002 @ 13:26:
Ff in de registry, waar je je progje in het rechtemuisklik menuutje hebt gepropt, "%1" toevoegen zodat de filenaam incl. spaties tussen " en " wordt doorgegeven, en dan is het wel 1 (geldige) file.
App.exe "%1" dus.
Het wordt al tussen quotes doorgegeven

  • WoutF
  • Registratie: Maart 2000
  • Laatst online: 11:28

WoutF

Hoofdredacteur
Topicstarter
41.6C.6D.61.72 schreef op 03 augustus 2002 @ 12:41:
Zoek op de "GetShortName" api. Ik zocht mijn eerder geposte code al, maar ik zie niets in oude topics.. maar dat zal wel een bekend probleem zijn (denk ik?)
Heb ik net geprobeerd. Als ik alleen een directory doorgeef maakt hij prachtig een shortname ervan

dus c:\documents and settings wordt c:\docume~1
maar zodra er een file in het pad staat werkt het niet
dus c:\documents and settings\blaat.txt wordt ""

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

Crazy D

I think we should take a look.

Voer ff hard in code een lange bestandsnaam in. Ik heb nog nooit problemen gehad met het lezen/schrijven van lange filenamen die bv via een file-open dialoogje geselecteerd zijn. Als dat bij jou niet werkt, heb je sowieso al een probleem ;) Als dat wel werkt, geef dan in de project properties een command line op, en ga daar mee spelen. Als in Command$ het path tussen " en " staat, zul je denk ik de "" even moeten replacen voor niks.

Exact expert nodig?


  • WoutF
  • Registratie: Maart 2000
  • Laatst online: 11:28

WoutF

Hoofdredacteur
Topicstarter
Crazy_D schreef op 03 augustus 2002 @ 17:25:
Voer ff hard in code een lange bestandsnaam in. Ik heb nog nooit problemen gehad met het lezen/schrijven van lange filenamen die bv via een file-open dialoogje geselecteerd zijn. Als dat bij jou niet werkt, heb je sowieso al een probleem ;) Als dat wel werkt, geef dan in de project properties een command line op, en ga daar mee spelen. Als in Command$ het path tussen " en " staat, zul je denk ik de "" even moeten replacen voor niks.
Als ik de source file hardcode en er zit een spatie in het pad werkt het ook niet

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

Crazy D

I think we should take a look.

Wout schreef op 04 augustus 2002 @ 13:53:
[...]

Als ik de source file hardcode en er zit een spatie in het pad werkt het ook niet
:?
Kun je wel gewoon een textfile inlezen die in een "lange bestandsnaam dir" (:P) staat? Zo nee lijkt me het een windows probleem :? Zo ja lijkt het me een probleem van het component waarmee je probeert te ftp-en.
Getshortname API (oid) zou moeten werken dan.

Exact expert nodig?


  • WimB
  • Registratie: Juli 2001
  • Laatst online: 30-03-2024
Als je een bestandsnaam zonder spaties in VB krijgt, dan worden daar geen quotes rondgezet. Staan er wel spatie in, dan worden er vooraan en achteraan een " toegevoegd. Windows geeft dit zo door aan VB.

Het komt er dus gewoon op neer om de quotes te verwijderen en dan zal het wel werken. Visual Basic heeft die quotes die hij van Windows krijgt helemaal niet nodig.

Als de quotes uit de string verwijderd zijn, kan je wel met het bestand werken.

  • WoutF
  • Registratie: Maart 2000
  • Laatst online: 11:28

WoutF

Hoofdredacteur
Topicstarter
WimB schreef op 04 augustus 2002 @ 18:33:
Als je een bestandsnaam zonder spaties in VB krijgt, dan worden daar geen quotes rondgezet. Staan er wel spatie in, dan worden er vooraan en achteraan een " toegevoegd. Windows geeft dit zo door aan VB.

Het komt er dus gewoon op neer om de quotes te verwijderen en dan zal het wel werken. Visual Basic heeft die quotes die hij van Windows krijgt helemaal niet nodig.

Als de quotes uit de string verwijderd zijn, kan je wel met het bestand werken.
:*
I wuv you
Pagina: 1