Tu es encore la dessus,
SearchBinaryInBinary et son
exemple n'était suffisant ?
ça passe le déférencement d'un pointeur non typé ?
Ptr_Fiche_En_RAM est vrai un pointeur et non un PChar ?
D'ailleurs, le résultat sera la recherche d'une chaine dans la chaine ne contenant qu'un seul char ...
Tu peux tenter de le simuler
1 2 3 4 5 6
| type
TFiche_En_RAM = packed record
refCnt: Longint;
length: Longint;
Data: Pointer;
end; |
Cela fonctionne en D7,
En unicode la structure contient le CodePage et la taille du char avant refCnt, mais l'unicode poserait d'autre problème de comparaison entre un String et un Buffer
1 2 3 4 5 6 7 8 9 10 11 12
| {
Chn_Cherchee : string;
Ptr_Fiche_En_RAM : Pointer;
Fiche_En_RAMRec: TFiche_En_RAM;
}
Fiche_En_RAMRec.refCnt := -1;
Fiche_En_RAMRec.length := Longueur_Fiche;
Fiche_En_RAMRec.Data := Ptr_Fiche_En_RAM;
Retour := Pos(Chn_Cherchee, PString(@Fiche_En_RAMRec.Data)^);
// Retour := Pos(Chn_Cherchee, string(Fiche_En_RAMRec.Data)); // syntaxe plus simple mais je trouve que la première évite tout doute de code implicite |
Cela reste un gros délire !
Code rigolo a tester mais à ne pas conserver pour un projet en prod !
Faire PosMem, c'est deux boucles simples à coder !
Partager