[VB.NET]Bij spatie in parameterstring werkt externe app niet

Pagina: 1
Acties:

  • The__Virus
  • Registratie: Januari 2005
  • Laatst online: 15:33
Ik heb een vervelend probleem, waar ook lastig wat over te vinden valt.
Ik heb een VB.NET applicatie gemaakt en van daaruit roep ik een fotoresizer aan die werkt via de commandprompt:
Visual Basic:
1
System.Diagnostics.Process.Start(pathnieuwebestandsnaamresizer, fotomap)

(de eerste string is de locatie en filename, de tweede is de parameter die ik meegeef).
Hierdoor verkleint het de foto's naar een waarde die genoemd is in de bestandsnaam.

Het probleem dat zich voordat, is dat als er in de string fotomap een spatie voorkomt, de parameter incorrect wordt voor cmd.exe en dat het programma (in een flits) laat zien dat de map (in dit geval C:\Documents) niet bestaat. Dat klopt ook, want het is Documents and Settings\blabla.

Nu lijkt mij de oplossing in de string " vooraan en achteraan te plaatsen. Helaas weet ik niet hoe dat moet, want dan krijg je iets als:
Visual Basic:
1
Dim fotomap As String = """ + tbxfotomap.Text + """

En dat werkt niet, omdat er 3x achterelkaar van die tekens staan, waardoor [+ tbxfotomap.Text +] als string wordt gezien (wat de codeinterpreter van GoT dus ook doet :P)
Ik heb het ook al geprobeerd met enkele aanhalingstekens ( ' ), maar ook dat mag niet baten, de error blijft.
Maak ik van de string fotomap echter een locatie als C:\foto's (ook met aanhalingsteken geen probleem), dan werkt het vlekkeloos.

Ik hoop eigenlijk zelfs dat ik twee parameters mee kan geven, zoiets als:
Visual Basic:
1
System.Diagnostics.Process.Start(pathnieuwebestandsnaamresizer, fotomap, doelmap)

Dat kreeg ik nog minder voor elkaar, omdat daar Visual Studio al moeilijk begon te doen. En de strings samenvoegen werkte ook niet, maar misschien dat het na het oplossen van dit probleem mogelijk wel werkt :).

Mijn vraag is dus hoe ik dit geintje oplos :). BVD

[ Voor 16% gewijzigd door The__Virus op 17-01-2007 16:18 ]


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Escapen lijkt me.
code:
1
"\"";

https://fgheysels.github.io/


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Escapen ging in VB toch door het te escapen teken te herhalen? :)
Visual Basic .NET:
1
Dim fotomap As String = """" + tbxfotomap.Text + """"

Zoiets dus, lijkt me.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • The__Virus
  • Registratie: Januari 2005
  • Laatst online: 15:33
Die van -NMe- geprobeerd en het werkte meteen! Ik heb vaker voor dit probleem gestaan en kon de oplossing nooit vinden (ik leer het mezelf een beetje :P). Want wat ik op school geleerd heb is niet bar veel iig. Weer wat geleerd, hartelijk dank :).

[ Voor 12% gewijzigd door The__Virus op 17-01-2007 16:28 ]


  • lennartkocken
  • Registratie: September 2004
  • Laatst online: 14:31
+? Da's niet netjes hè als je strings aan elkaar wil knopen (string concatenation). Dat doe je dus met & ;)

Verwijderd

lennartkocken schreef op woensdag 17 januari 2007 @ 16:31:
+? Da's niet netjes hè als je strings aan elkaar wil knopen (string concatenation). Dat doe je dus met & ;)
String concatenation doe je standaard met de StringBuilder... ;)

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

The__Virus schreef op woensdag 17 januari 2007 @ 16:27:
Die van -NMe- geprobeerd en het werkte meteen! Ik heb vaker voor dit probleem gestaan en kon de oplossing nooit vinden (ik leer het mezelf een beetje :P). Want wat ik op school geleerd heb is niet bar veel iig. Weer wat geleerd, hartelijk dank :).
De volgende keer heb je er wellicht meer aan als je dan even gaat [google=visual basic use quotes in strings], daar is het namelijk de eerste hit. En er is niet eens zo'n lastig te verzinnen Google query nodig, al kan dat wel. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • The__Virus
  • Registratie: Januari 2005
  • Laatst online: 15:33
Ik heb er niet zo'n verstand van excuus. Maar het werkt op deze manier dus ik vind het prima :P. Dat is hét voordeel van VB vind ik zelf, het is eenvoudig, doet niet zo gauw moeilijk over bijv. dat soort zaken en heeft bovendien niet meerdere soorten strings etc. (misschien ook wel, maar de gewone string voldoet voor veel :)).

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

Verwijderd schreef op woensdag 17 januari 2007 @ 16:36:
[...]


String concatenation doe je standaard met de StringBuilder... ;)
Hangt er van af :) Als je maar een paar aan elkaar wil plakken dan is een StringBuilder langzamer :) Je kan trouwens voor dit soort gevallen ook String.Format gebruiken :)

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Verwijderd schreef op woensdag 17 januari 2007 @ 16:36:
[...]


String concatenation doe je standaard met de StringBuilder... ;)
Zoals gorgi zegt; dat hangt er vanaf. Het is zinloos om een StringBuilder te instantieren als je slechts een beperkt aantal strings aan elkaar wilt plakken. (Het instantieren van een StringBuilder kost nl. ook iets, en als je een beperkt aantal strings aan elkaar plakt, is dat voordeel ook weg).
Trouwens, als je dit doet:
code:
1
string s "aaa" + "bbb";

Dan 'ziet' de compiler dat je die 2 strings concat, en zal hij dat wegoptimizen.

https://fgheysels.github.io/

Pagina: 1