Newsgroup: it.comp.lang.visual-basic
Titolo: File .RES e stringhe duplicate

Ciao a tutti.
Mi ritrovo questo problema: ho un file RES incluso in un progetto VB con 
delle stringhe duplicate, e fin qui tutto bene, compila e tutto funziona.
Il problema sorge quando tento di compilare un file RC in RES con Rc.exe: 
questo mi dice sistematicamente che non possono esserci stringhe doppie.
Allora la prima domanda č: come fa VB a creare file RES con stringhe doppie?
Ma soprattutto: come faccio io?
Ciao 

 Ciao
Che messaggio ti dà l'RC.EXE?
Non sarà invece che RC si arrabbia perché hai utilizzato 2 volte non una stringa
(che sarebbe assurdo) bensì un identificativo numerico?
Bye
Raf

Ma soprattutto: come faccio io?
Molto al volo:
forse stesso nome, ma tipo diverso?
forse stesso nome, ma ID diverso?
m22

 (che sarebbe assurdo) bensì un identificativo numerico?
Forse sì, il problema è che ho messaggi di questo tipo:
"
C:\Omega\tools\Traduzioni\Traduttore\Translated\StringResources_EN.rc 
(3127): er
ror RC2151 : cannot reuse string constants, 11(0xB) - "Raw" already defined. 
Can
not add 11(0xB) - "@Greggio".
"
Ma nel file rc c'è un solo 11 ed è appunto "Raw".
"@Greggio" appare come 2 volte con id 50301 e 65547 quindi davvero non 
capisco.
Ciao 

 capisco.
65547 ----> 0x1000B
0x1000B & 0xFFFF ----> 0x0B ----> 11
mi sa che rc prenda i primi due byte, quindi 65547 e 11 si equivalgono. 
ergo non superare 0xFFFF cioe` 65535.
-- 
ciao, hal

 ergo non superare 0xFFFF cioe` 65535.
Acc... questa è un'intuizione geniale ;)
Lunedì sarà la prima cosa che proverò.
Quindi l'rc.exe ha un buco/limitazione, perchè un file res creato in VB non
ha di questi problemi.
Ciao
--
Reporting tool: 
http://www.neodatatype.net

 ha scritto nel messaggio
news:slRse.15170$b5.7...@news3.tin.it...

No, nessun buco.
Se guardi qui:
http://msdn.microsoft.com/library/en-us/tools/tools/stringtable_resource.asp
dice espressamente che StringID deve essere un unsigned int.
Difatti il resource editor di VB dà un chiaro messaggio di errore quando si
tenta di definire una stringa con un ID superiore a 65535.
Bye
Raf

 tenta di definire una stringa con un ID superiore a 65535.
mmm... ora non ho qui il file res originale, ma il mio RC lo ricavo
scrivendo un file di testo da un loop su un file RES incluso in un progetto
VB, quindi i miei ID sono quelli presenti in questo file RES, che compila...
Ciao

 ha scritto nel messaggio
news:IkUse.15945$b5.7...@news3.tin.it...

Secondo me ci deve essere qualche stranezza nel tuo loop...
E comunque IMHO è una scelta singolare per trasformare un .RES in un .RC.
Se non hai particolari motivi per fare così, usa piuttosto l'editor di risorse
di Visual Studio (.NET o anche quello del VC++ 6). Con quello puoi direttamente
esportare un .rc da un .res.
Bye
Raf

 E comunque IMHO è una scelta singolare per trasformare un .RES in un .RC.
Beh, non è che mi diverto a fare 'ste cose :)
Il problema è una gestione del multilingua fatta in un modo un po' strana:
- file di risorse in italiano.
- riversato in una tabella access per permettere ai traduttori di tradurre
le frasi.
- ripresa la tabella e riversata nella lingua corretta in un file RC.
- compilato il file RC.
Sono sicuro che tra il punto 2 e il 3 nessuno ci ha messo mano aggiungendo
id nuovi.
