2010-12-14 34 views
12

Je souhaite copier le contenu de la chaîne dans le tableau char.Copie du contenu de la chaîne dans le tableau char

Puis-je utiliser ce code StrLCopy(C, pChar(@S[1]), high(C));

J'utilise Delphi 2006. actuellement qu'il y aura des problèmes si je mets à jour ma version Delphi en raison du soutien Unicode fourni dans les versions plus récentes?

Sinon, quel peut être le code pour cette conversion?

Répondre

14

Lorsque vous copiez une chaîne dans un tableau, préfèrent StrPLCopy.

StrPLCopy(C, S, High(C)); 

Cela fonctionnera dans toutes les versions de Delphi, même si Unicode est activé. Les types de caractères C et S doivent être identiques; N'essayez pas d'utiliser cette fonction pour convertir des caractères Ansi et Unicode.

Mais StrLCopy est bien aussi. Cependant, vous n'avez pas besoin d'avoir autant de code de pointeur. Delphi sait déjà comment convertir une chaîne en PChar:

StrLCopy(C, PChar(S), High(C)); 
+0

Merci Rob avoir pris le temps – Bharat

6

Cela fonctionne, dans un test rapide:

var 
    ch: array[0..10] of Char; 
    c: Char; 
    x: Integer; 
    st: string; 
begin 
    s := 'Testing'; 
    StrLCopy(PChar(@ch[0]), PChar(s), High(ch)); 
    x := 100; 
    for c in ch do 
    begin 
    Canvas.TextOut(x, 100, c); 
    Inc(c, Canvas.TextWidth(c) + 3); 
    end; 
end; 
+0

Pouvez-vous s'il vous plaît me dire la différence entre les deux déclarations StrLCopy – Bharat

+0

Merci Ken avoir pris le temps – Bharat