2010-12-14 22 views
12

Quiero copiar el contenido de la cadena a la matriz de caracteres.Copiando contenido de cadenas a la matriz de caracteres

¿Puedo usar este código StrLCopy(C, pChar(@S[1]), high(C));

Actualmente estoy usando Delphi 2006. ¿Habrá problemas si actualizo mi versión de Delphi debido al apoyo proporcionado Unicode en las últimas versiones?

En caso negativo, ¿cuál puede ser el código para esta conversión?

Respuesta

14

Cuando se está copiando una cadena en una matriz, prefieren StrPLCopy.

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

Eso funcionará en todas las versiones de Delphi, incluso cuando esté en vigor Unicode. Los tipos de caracteres de C y S deben ser iguales; no intente usar esa función para convertir caracteres Ansi y Unicode.

Pero StrLCopy está bien, también. Sin embargo, no necesitas tener tanto código de puntero. Delphi ya sabe cómo convertir una cadena en un PChar:

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

Gracias por tomarse el tiempo Rob – Bharat

6

Esto funciona, en una prueba rápida:

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

¿Me podría decir la diferencia entre los dos estados STrlCopy – Bharat

+0

Gracias Ken por tomarse el tiempo – Bharat

Cuestiones relacionadas