Newsgroup: it.comp.lang.visual-basic
Titolo: VB6 Replace apice  con doppia due apici , non viene eseguito

VB6 sp5
Debbo creare una query, quindi debbo sostituire tutti gli apici con doppi 
apici:
? Replace(Valore, "'", "''")
Lo stiletto Classic Pen &egrave; pensato per l''Intuos3 di Wacom, per creare 
sul computer disegni e schemi particolarmente precisi.Peso : 13 gTecnologia 
: senza pila e senza filiGradi di pressione : 1 024Sensibilit&agrave; 
all?inclinazione : &plusmn; 60&deg;Dimensioni (L x E) / (L x P x A) : 151 mm 
x 12 mmTool ID : s&igrave;Gomme : s&igrave;Accessori forniti :3 punte di 
stiletto standardPunta di stiletto Felt PenPunta di stiletto Stroke 
Pen<!--KEYDSHEADER--><style type="text/css">td.ds_header{background:#D2E6FF; 
font-family:Verdana, Arial, Helvetica, sans-serif; font-size: 10px; 
font-weight: bold ;display:table-cell; vertical-align:inherit; 
text-align: -webkit-auto;  }td.footer   {background: #D2E6FF }td.ds_label 
{background: #CCCCCC;font-color: white; font-family: Verdana, Arial, 
Helvetica, sans-serif; font-size: 10px; padding-left: 5px; padding-right: 
5px; height: 20px;}td.ds_data  {background: #FFFFFF; font-family: Verdana, 
Arial, Helvetica, sans-serif; font-size: 10px;}a.footer{color: 
#1450A0}</style><ta
ble align="center" cellpadding="0" cellspacing="0" class="mainTable"> 
<tr>           <td><td align="center" class="specs">    <table 
align="center" valign="top" cellspacing="0" cellpadding="0" id="1" 
style="display:block" width="97%">   <tr>   <td colspan="2" > 
<table cellpadding="4" cellspacing="0" width="100%">              <tr> 
<td width="48%" valign="top"> <tr> <td   class="ds_label" 
width="40%">Commenti</td><td   class="ds_data"><p>Lo stiletto 
<strong>Classic Pen</strong> &egrave; pensato per l''Intuos3 di Wacom, per 
creare sul computer disegni e schemi particolarmente precisi.<br />Peso : 13 
g<br />Tecnologia : senza pila e senza fili<br />Gradi di pressione : 1 
024<br />Sensibilit&agrave;
 all'inclinazione      <<-----------------
 : &plusmn; 60
<br />Dimensioni (L x E) / (L x P x A) : 151 mm x 12 mm<br />Tool ID : 
s&igrave;<br />Gomme : s&igrave;<br /><br />Accessori forniti :<br />3 punte 
di stiletto standard<br />Punta di stiletto Felt Pen<br />Punta di stiletto 
Stroke Pen</p></td></tr></table> </td>   </table> </td>  </tr>  </table>
Notere che il doppio apice c'č al primo rigo:  l''Intuos3
ma quasi alla fine appare  "all'inclinazione"   con un singolo apice ! e mi 
manda in errore la query
Come č possibile che  Replace(Valore, "'", "''") mi abbia saltato un valore 
?
cosa ancora piů stana č che su 103mila record , questo č ll'unico caso
grazie per l'eventuale aiuto

 questo è ll'unico caso
Una possibilità è che quello che tu vedi come un
singolo apice non sia tale, ma sia per esempio un
accento grave o magari anche un qualche diacritico...
A seconda del carattere che usi per visualizzare
la stringa potresti non accorgertene.
Apice o apostrofo: ' (e anche questi non sono
sempre lo stesso carattere)
Virgolette singole sinistra e destra: ‘ e ’
Accento acuto: ´
Accento grave: `
[a proposito: non ho la minima idea di quello
che vedrete davvero nelle righe qui sopra :-)]
Apri quel testo con un hex editor e controlla che
sia davvero un singolo apice.
Bye, G.

In effetti se cerco gli apici con  :  Instr(1,Var,"'")    me ne trova solo 
due , quello in mezzo anche se non è un apice , evidentemente, viene 
considerato come tale dal php che mi genera un errore.
Ora cerco di capire che codice ascii è è lo converto in apice classico ..
"Paperino" <non...@lo.dico.invalid> ha scritto nel messaggio 
news:imnc06$cul$1...@dont-email.me...


? Replace(mid(Valore,1760,10), chr(39), "''")
ll'inclina
Roba da matti c'è un singolo apice !
? asc(Replace(mid(Valore,1762,1), chr(39), "A" ))
 39
Allora vediamo dopo che succede !
? right(Replace(Valore+"'", chr(39), "A" ),1)
A
L'apice messo a mano viene valutato !
insomma  ASC mi restituisce 39 , ma  replace non vede un 39
il mistero si infittisce....... 

"[work] Ivan" ha scritto

Intanto un consiglio di base per capirci un po'
meglio: usa le "funzioni stringa" per le stringhe,
altrimenti potresti avere risultati inaspettati.
Per esempio, Mid$ al posto di Mid e Chr$ al posto
di Chr. Fidati, c'è differenza :-).
E anche come funzione di concatenazione fra stringhe,
usa & al posto di + se vuoi evitare errori strani.
Un'altra cosa: qui non ho VB6, ma mi pare di ricordare
che ci fosse qualche bug nella Replace, se non hai
l'ultimo service pack.
Forse mi sbaglio e mi confondo con la Split...
ma mi pare che non sostituisse l'ultimo elemento
trovato. Una cosa del tipo
Stringa originale: "A, G, H, J, B, F"
fai un Replace della virgola con punto e virgola,
E come stringa di uscita ottieni: "A; G; H; J; B, F".
Ripeto, forse mi sbaglio, ma prova a vedere
se è questo il caso.
Bye, G. 

 ? Replace(mid(Valore,1760,10), chr(39), "''")
Le funzioni sulle stringhe sono carogne, io per definizione
prima di lavorarci le trasformo (sic) in stringa e evito
di includere funzioni in funzioni.
Indi:
Sc = mid(Valore,1760,10)  ' la stringa che contiene il testo, nel tuo caso il testo PHP
Tr = Chr(39)
Ci = Chr (34)  ' il doppio apice
Sc = Replace(Sc,Tr,Ci)
mid(Valore,1760,10) = Sc