![]() |
![]() |
![]() |
![]() |
![]() |
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. ![]() |
![]() |
|
|
![]() |
|