Autore Topic: [RISOLTO] caratteri speciali con replace$  (Letto 1121 volte)

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
[RISOLTO] caratteri speciali con replace$
« il: 23 Luglio 2010, 22:08:45 »
ciao a tutti.
devo fare un automazione con la scell dove ogni volta che passo il comando alla shell la path che passo al comando potrebbe essere diversa. Formo la stringa da usare al comando shell e poi richiamo la stringa con la shell:

Codice: gambas [Seleziona]

DIM percorso AS string
DIM stringashell AS string

percorso=dialog.path

stringashell="CD " & percorso

SHELL stringashell



supponiamo che percorso prenda /home/dir/ tutto ok.

se il percorso fosse /home/dir prova/ nella shell dovrei usare /home/dir\ prova/. Ho provato ad usare:

Codice: gambas [Seleziona]

percorso=replaces$(percorso, " ", "\ ")


la risposta é: bad character constant in string.

sapete perchè?
« Ultima modifica: 26 Luglio 2010, 14:06:56 da doublemm »
Matteo DoubleMM Mion

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: caratteri speciali con replace$
« Risposta #1 il: 23 Luglio 2010, 22:35:47 »
forse dovresti passargli il path in questo modo

stringashell = "cd '" & percorso & "'"

mettendo tra apici il percorso...

Offline Picavbg

  • Senatore Gambero
  • ******
  • Post: 1.620
    • Mostra profilo
Re: caratteri speciali con replace$
« Risposta #2 il: 23 Luglio 2010, 22:38:11 »
Il crt "\" é un carattere speciale e come tale dovresti utilizzare l'espressione Chr(92), dove 92 é il valore decimale del set dei caratteri ASCII accettata da Gambas.
Io non sono pratico di Shell, ma basta provare.
:( :(
:ciao:

Offline Ceskho

  • Amministratore
  • Senatore Gambero
  • *****
  • Post: 3.778
  • Vi Veri Veniversum Vivus Vici
    • Mostra profilo
    • Pagina Personale
Re: caratteri speciali con replace$
« Risposta #3 il: 24 Luglio 2010, 00:18:10 »
ciao a tutti.
devo fare un automazione con la scell dove ogni volta che passo il comando alla shell la path che passo al comando potrebbe essere diversa. Formo la stringa da usare al comando shell e poi richiamo la stringa con la shell:

Codice: gambas [Seleziona]

DIM percorso AS string
DIM stringashell AS string

percorso=dialog.path

stringashell="CD " & percorso

SHELL stringashell



supponiamo che percorso prenda /home/dir/ tutto ok.

se il percorso fosse /home/dir prova/ nella shell dovrei usare /home/dir\ prova/. Ho provato ad usare:

Codice: gambas [Seleziona]

percorso=replaces$(percorso, " ", "\ ")


la risposta é: bad character constant in string.

sapete perchè?


Il carattere \ è un carattere speciale di escape...se vuoi usarlo e quindi stamparlo a schermo devi usare il doppio slash \\

Quindi ad esempio per scrivere nel terminale

Codice: [Seleziona]
\

Devi dare

Codice: [Seleziona]
PRINT "\\"

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: caratteri speciali con replace$
« Risposta #4 il: 24 Luglio 2010, 07:17:17 »
grazie, appena posso provo perchè ieri mi è partito il pc su cui lavoravo e adesso sto recuperando i dati.
Matteo DoubleMM Mion

Offline md9327

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.840
    • Mostra profilo
Re: caratteri speciali con replace$
« Risposta #5 il: 26 Luglio 2010, 10:10:24 »
Se il problema è con le directory contenenti spazi, puoi tranquillamente fare:
Codice: [Seleziona]
stringashell = "cd \"" & percorso & "\""

questo è valido anche con path senza spazi...

Offline doublemm

  • Maestro Gambero
  • ****
  • Post: 445
    • Mostra profilo
Re: caratteri speciali con replace$
« Risposta #6 il: 26 Luglio 2010, 14:05:54 »
ho risolto con replace$(stringa," ","\\")
@md9327  farò una prova anche con la tua soluzione..

Grazie a tutti
Matteo DoubleMM Mion