Domanda
Ho un file .rc che viene usato per includere alcuni dati di testo nel mio eseguibile, in questo modo:
1234 RCDATA myfile.txt
Funziona benissimo: il contenuto di "myfile.txt" è incluso nel mio eseguibile. Il problema è che alla stringa non viene aggiunto 0-terminator e non posso aggiungerlo al file. Esiste un modo per aggiungere un terminatore 0 all'interno del file .rc? Qualcosa del genere:
1234 RCDATA { myfile.txt, "\0" } // error RC2104
Nota che ho già trovato questa soluzione, ma sto cercando qualcosa di più elegante.
1234 RCDATA myfile.txt
1235 RCDATA { "\0" }
Grazie mille, eli
Soluzione
Non credo, a meno che tu non scriva il tuo compilatore di risorse.
Non ne ho incontrato uno che ha permesso di costruire una risorsa da più fonti.
Puoi scrivere una piccola utility per aggiungere un '\ 0' finale a un file, ad esempio makeZ.exe,
e imposta un ulteriore passaggio di creazione:
makeZ myfile.txt myfileZ.txt
Nel tuo .rc ci sarà
1234 RCDATA myfileZ.txt
Altri suggerimenti
In alternativa, è possibile esaminare l'incorporamento dei dati nell'RC stesso, come per questa sezione dal manuale GORC :
0x3333 RCDATA
BEGIN
"Hello world"
"Hello world (zero terminated)\0"
L"A Unicode version of the above\0"
0x9999 ;hex number stored as a word
END
MyRes RCDATA
BEGIN
1034 ;decimal number stored as a word
END
MyRes MyResType
BEGIN
10456L ;decimal number stored as a dword
1234L,56666L,99999L ;decimal numbers stored as dwords
END
34h 100h
BEGIN
33hL,34hL,35hL,36hL ;hex numbers stored as dwords
0x37L,0x38L,0x39L,0x40L ;C-style hex numbers stored as dwords
END
Faresti meglio a inserire il carattere finale nel file stesso. Se myfile.txt è archiviato in ANSI hai bisogno di un byte finale, se myfile.txt è archiviato in Unicode hai bisogno di due byte finali e la tua istruzione RCDATA non può accenderlo.