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

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top