Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

VB6 Replace apice con doppia due apici , non viene eseguito

232 views
Skip to first unread message

[work] Ivan

unread,
Mar 27, 2011, 7:36:19 AM3/27/11
to
VB6 sp5
Debbo creare una query, quindi debbo sostituire tutti gli apici con doppi
apici:

? Replace(Valore, "'", "''")

Lo stiletto Classic Pen è 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à
all?inclinazione : ± 60°Dimensioni (L x E) / (L x P x A) : 151 mm
x 12 mmTool ID : sìGomme : sì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


Paperino

unread,
Mar 27, 2011, 8:53:25 AM3/27/11
to
"[work] Ivan" ha scritto

> VB6 sp5
> Debbo creare una query, quindi debbo sostituire tutti gli apici con doppi
> apici:
> ? Replace(Valore, "'", "''")

Per andare sul sicuro, usa dei valori espliciti:
Dim ValoreDaCercare as String
ValoreDaCercare=chr$(39)
Dim ValoreDaSostituire as String
ValoreDaSostituire=chr$(39)

Replace (StringaInCuiCercare, ValoreDaCercare, ValoreDaSostituire

ATTENZIONE: io ho messo quel "39" a casaccio,
non ricordo il codice ASCII coretto.

> Lo stiletto Classic Pen &egrave; pensato per l''Intuos3 di Wacom, per
creare

[CUT]


> 024<br />Sensibilit&agrave;
> all'inclinazione <<-----------------
> : &plusmn; 60

> 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

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.


[work] Ivan

unread,
Mar 27, 2011, 10:19:03 AM3/27/11
to
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...

[work] Ivan

unread,
Mar 27, 2011, 12:44:55 PM3/27/11
to
? 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.......


Paperino

unread,
Mar 27, 2011, 2:20:41 PM3/27/11
to
"[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.

Franz_aRTiglio

unread,
Mar 27, 2011, 3:16:58 PM3/27/11
to
[work] Ivan wrote:
> ? 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

0 new messages