Newsgroup: it.comp.software.newsreader
Titolo: [Dialog] Svelato l'arcano sul copy&paste (per chi si ricorda & interessa)

Premetto che e' lungo. ^__^;
Riassunto delle puntate precedenti:
Su alcune piattaforme Windows e PC, benche' non si sia ancora capito la
discriminante (io ho ho riscontrato la cosa su un Windows 2K e XP), gli
script che fanno uso di testo copiato dalla lista degli articoli, o dalla
lista dei newsgroup, hanno un comportamento anomalo.
Venne fuori che su alcune (rare a quanto pare) piattaforme, quando si
copiava il testo selezionato da uno dei due controlli di cui sopra e si
incollava in un TMemo, invece di scrivere il testo corretto sparava 3
caratteri estesi messi in croce.
Non se ne cavo un ragno dal buco. Anche Marcus abbandono' il bug report
perche' non capiva il perche' di questo comportamento, e non riusciva a
replicare l'errore.
Poi venne il prode Antonio 'Gandalf' Favata che suggeri' la seguente cosa:
Se si copiava del testo da una delle due liste, e si incollava su un
controllo che supportava i caratteri unicode (come la stessa finestra di
composizione messaggio di Dialog) tutto andava bene. Il problema avveniva
quando si copiava su un editor che non supportava l'unicode.
In parte aveva ragione: incollando il testo sulla finestra di composizione
di Dialog, *anche* nelle piattaforme che davano questa problematica, il
problema non sussisteva.
Ma non era un discorso di editor con il supporto unicode o meno. Infatti,
stesso editor (come ad esempio UltraEdit) installato su due macchine (una
col "problema", l'altra no) aveva comportamenti diversi. Ma cosa piu'
importante, non si capiva come mai da una parte Dialog avrebbe dovuto
creare un TMemo in unicode, mentre dall'altra no.
Pero' la cosa (con un po' di ritardo ^__^; ) mi ha fatto venire un'idea..
Il contenuto della clipboard era corretto. Altrimenti, neppure copiandolo
sulla finestra di composizione avrebbe dovuto dare il testo voluto.
Quindi, la differenza stava nel "come" si andava a recuperare il contenuto
della clipboard.
Evidentemente, il "pasteFromClipboard()" della classe TMemo utilizza delle
chiamate di sistema, che sono preimpostate e nel caso di alcune versioni di
SO (magari le prime.. ripeto, l'effettivo discriminante non si e' ancora
capito) recupera il testo in formato non unicode per default; mentre nella
finestra di composizione viene forzato il recupero in unicode.. questo
almeno e' quello che ho pensato.
Allora, ho preso la documentazione delle API di Windows; ho adattato la
dichiarazione delle API da C a "Delphi", e giu' a provare..
.. fino a forzare il recupero del testo in UNICODE.. ma ancora non
funzionava. Il risultato era il medesimo.
Un po' ero sconsolato.. ma mi son detto "magari il formato non e' UNICODE,
ma un'altro".. e in effetti era cosa. Il formato del testo che viene
salvato nella clipboard quando si fa una copia da uno dei due controlli (o
anche dalla finestra di dialogo) e' OEM. Purtroppo negli ultimi anni ho
abbandonato la programmazione windows a basso livello, perche' altrimenti
ci sarei arrivato prima.
Va beh, cmq sia fine dell'odissea. Finalmente posso realizzare (e
modificare) script che per funzionare hanno bisogno di recuperare del testo
tramite quella procedura anche su quelle piattaforme sulle quali
"pasteFromClipboard()" non e' sufficiente.
Un grazie quindi ad Antonio 'Gandalf' Favata, perche' se non mi avesse
fatto notare che la copia sulla finestra di composizione funzionava, non mi
sarei neanche messo a tentare di recuperare il testo nella clipboard in
modo diverso.
Ora si tratta solo di aggiungere la procedura al "framework" (parolona) che
sto sviluppando.. tra l'altro in questo modo non si necessita' piu' di Form
e Memo di appoggio per scambiare stringhe tra l'interfaccia di Dialog e gli
Script (che mi pare sia la procedura che viene usata adesso in tutti gli
script, o almeno in quelli che ho visto).
-- 
ZER0://coder.gfxer.web-designer/
~ Come devo regolare la stampante laser per stordire?
(How do I set a laser printer to stun?)

 script, o almeno in quelli che ho visto).
Complimenti per l'iniziativa.
Tu e MLC dovreste mettervi insieme (professionalmente), e dare una bella
mano a Marcus per rendere piů semplice e utile lo scripting di Dialog...
-- 
Fare Well!    40tude Dialog (2.0.14.1, beta 37): 
http://snurl.com/dialog
G             Free It-Alt Group (it-alt/
free.it
 USG): 
http://www.fiag.it
      ICQ#    News server (gratuito ed anonimo): 
http://www.x-privat.org
  16553733    Per proporre nuovi gruppi su it-alt.* ~ news:it-alt.config
GIGAMAIL by X-Privat: 
http://www.x-privat.org/gigamail.php