![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
|
convertir de 'TCaption' para usar su valor en 'PAnsiChar'
Ante todo disculparme por si lo que expongo a continuacion es una supina estupidez, pero solo proguntando se aprende.
Vengo del mundo Clipper y alli el manejo de variables no es tan estrixto como en Delphi. Mi problema es el siguiente.: procedure TForm1.cVisorHexChange(Sender: TObject); var i:integer; Var Buffer:array[0..15] of char; begin { esta es la funcion que pretendo usar.: function HexToBin(Text, Buffer: PChar; BufSize: Integer): Integer Si entiendo bien Text := a la cadena de caracteres a convertir Buffer := Puntero al inicio del array donde queremos salvar el resultado BufSize := Tamaño del Buffer El problema viene al usar form1.cVisorHex.Text que es la cadena que contiene el valor a convertir pero que es de tipo TCaption y me da el siguiente error .: [Error] Fecha.pas(202): Incompatible types: 'TCaption' and 'PAnsiChar' La pregunta es.: como paso de un tipo a otro, con que funcion????? } i := HexToBin( form1.cVisorHex.Text, Buffer; Sizeof( Buffer ) ) end; Agradezco vuestra ayuda por adelantado. |
|
#2
|
||||
|
||||
|
Un TCaption no es mas que un simple string
Código:
TCaption = type string; Código:
HexToBin(PChar(form1.cVisorHex.Text), Buffer, Sizeof(Buffer)); HexToBin(PAnsiChar(form1.cVisorHex.Text), Buffer, Sizeof(Buffer));
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
|
|
#3
|
|||
|
|||
|
Gracias DELPHI.COM.AR tu respuesta a sido perfecta, pero parece que sigo sin entender bien el funcionamiento de
{function HexToBin(Text, Buffer: PChar; BufSize: Integer): Integer} el resultado Binario lo almacena en buffer??? en tipo char ??? lo que yo deseo es el resultado en formato cadena alfanumerica de pasar un Hex a Binario, esta funcion sirve o tengo que usar otra??? Disculpa por la torpeza |
|
#4
|
||||
|
||||
|
Cita:
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
|
|
#5
|
|||
|
|||
|
Imposible no consigo que el Buffer contenga la cadena alfanumerica con la representacion Binaria del Hex en cadena alfanumerica que le paso, podeis poner un ejemplo que funcione.
Gracias y disculpar por mi cerrazon mental. ![]() |
|
#6
|
||||
|
||||
|
Esta es una de las tantas formas de hacerlo:
Código:
function HexToBinStr(Value: string) : string;
var
Buffer: PChar;
BuffSize: Integer;
begin
BuffSize := Length(Value) div 2;
Buffer := StrAlloc(BuffSize);
try
ZeroMemory(Buffer, BuffSize);
HexToBin(PChar(Value), Buffer, BuffSize);
Result := Buffer;
finally
StrDispose(Buffer);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Caption := HexToBinStr('303132333435363738393a3b3c3d')
end;
Código:
function HexToBinStr(Value: string) : string; var BuffSize: Integer; begin BuffSize := Length(Value) div 2; Result := StringOfChaR(#0, BuffSize); HexToBin(PChar(Value), PChar(Result), BuffSize); end;
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
|
![]() |
|
|
|