Gambas-it

Archivi (sola lettura) => Programmazione (Gambas 2) => Topic aperto da: doublemm - 23 Luglio 2010, 22:08:45

Titolo: [RISOLTO] caratteri speciali con replace$
Inserito da: doublemm - 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è?
Titolo: Re: caratteri speciali con replace$
Inserito da: milio - 23 Luglio 2010, 22:35:47
forse dovresti passargli il path in questo modo

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

mettendo tra apici il percorso...
Titolo: Re: caratteri speciali con replace$
Inserito da: Picavbg - 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.
:( :(
Titolo: Re: caratteri speciali con replace$
Inserito da: Ceskho - 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 "\\"
Titolo: Re: caratteri speciali con replace$
Inserito da: doublemm - 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.
Titolo: Re: caratteri speciali con replace$
Inserito da: md9327 - 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...
Titolo: Re: caratteri speciali con replace$
Inserito da: doublemm - 26 Luglio 2010, 14:05:54
ho risolto con replace$(stringa," ","\\")
@md9327  farò una prova anche con la tua soluzione..

Grazie a tutti