FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
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
|
|||
|
|||
Erre que Erre!!!!!!!!!!!
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. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|