1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
var
wKeyWords:array of WideChar;
// sKeyWords:string; // non utilisé
aDataSize:array[0..3] of Byte; // Integer
iLength:LongInt;
begin
iLength:=oPFileStream.Read(aDataSize,4);
// SetLength(wKeyWords,Integer(aDataSize)*2 + 2); //+ zéro terminal
SetLength(wKeyWords,Integer(aDataSize) + 1); // wKeywords est un tableau de WideChar qui occupent déjà 2 octets
// FillChar(wKeyWords[0],Integer(aDataSize)*2 + 2,0); <- erreur rectifiée
FillChar(wKeyWords[0],Integer(aDataSize) + 1 ,0); <- erreur rectifiée
// iLength:=oPFileStream.Read(wKeyWords,Integer(aDataSize)*2);
iLength:=oPFileStream.Read(wKeyWords[0],Integer(aDataSize)*2);
// messagebox (0,pchar(inttostr(Length(wKeyWords))),pchar(inttostr(High(wKeyWords))), 0); // la taille est incohérente !
ShowMessage(IntToStr(Length(wKeywords)); // c'est très exactement Integer(aDataSize) + 1
// messageboxw (0, @wKeyWords, 'la chaine unicode', 0); // affichage correct
// je suis très surpris !
messageboxw (0, PChar(wKeyWords), 'la chaine unicode', 0); |
Partager