Ver Mensaje Individual
  #9  
Antiguo 14-09-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo.

Me quede pensando que tal vez tengas un registro con muchos campos de tipo string de diferentes tamaños y en ese caso se hace tedioso escribir los procedimientos anteriores.

Tratando de buscar el código simple, otra opción podría ser:
Código Delphi [-]
...
{$A-}
const
  (* Numero de campos del registro *)
  MaxFields = 20;
  (* Longitud de cada string del registro *)
  FieldsLength: array[1..MaxFields] of Integer = (12,9,8,5,7,11,...);

type
  TRegistro = record
    v: array[1..MaxFields] of string; // Campos
  end;

(* Registro a cadena *)
function RecordToString(r : TRegistro): string;
var
  i: Integer;
begin
  for i:= 1 to MaxFields do
    Result:= Result + r.v[i] + StringOfChar(' ', FieldsLength[i] - Length(r.v[i]));
end;

(* Cadena a registro *)
function StringToRecord(s : string): TRegistro;
var
  i,d: Integer;
begin
  d := 1;
  for i:= 1 to MaxFields do
  begin
    Result.v[i] := Copy(s, d, FieldsLength[i]);
    Inc(d,FieldsLength[i]);
  end;
end;
...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita