Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Guardar un type packed record (https://www.clubdelphi.com/foros/showthread.php?t=52370)

Mike Deet 18-01-2008 16:46:59

Guardar un type packed record
 
Ola

eu tenho um type que é um packed record de RGB e tenho um array desse type, eu queria guardar esse array num ficheiro e depois abrir esse ficheiro e guardar no mesmo array.

Type
TCubo=packed record
B,G,R:byte;
end;


CuboRGB:array[0..255,0..255,0..255] of TCubo;

algue me diz umas dicas como fazer isto.

MUCHAS GRACIAS

Crandel 18-01-2008 18:43:40

Hola Mike, aprende el uso etiquetas para tu codigo sea mas legible.

La idea es crear un archivo del tipo TCubo, el codigo seria algo asi:

Código Delphi [-]
var
  Archi: file of TCubo;
  i,j,k: integer;
begin
  AssignFile(Archi, 'nombre.dat');
  Rewrite(Archi);
  for i := 0 to 255 do
    for j := 0 to 255 do
      for k := 0 to 255 do
        Write(Archi, CuboRGB[i,j,k]);
  CloseFile(Archi);
end;

Suerte

jachguate 18-01-2008 21:07:05

También se puede hacer con un stream:

Código Delphi [-]
type
  TColorRGB = packed record
                B, G, R: byte;
  end;

  TCuboRGB = array[0..255,0..255,0..255] of TColorRGB;

procedure GuardaCubo(const CuboRGB: TCuboRGB);
var
  Arch: TFileStream;
begin
  Arch := TFileStream.Create('c:\datos.dat', fmCreate or fmShareExclusive);
  try
    if Arch.Write(CuboRGB, SizeOf(CuboRGB)) <> SizeOf(CuboRGB) then
      raise Exception.Create('Error al escribir!');
  finally
    Arch.Free;
  end;
end;

procedure LeeCubo(var CuboRGB: TCuboRGB);
var
  Arch: TFileStream;
begin
  Arch := TFileStream.Create('c:\datos.dat', fmOpenRead or fmShareDenyNone);
  try
    if Arch.Read(CuboRGB, SizeOf(CuboRGB)) <> SizeOf(CuboRGB) then
      raise Exception.Create('Error al leer!');
  finally
    Arch.Free;
  end;
end;

Hasta luego.

;)

Crandel 18-01-2008 21:49:03

Cita:

Empezado por jachguate (Mensaje 259271)
También se puede hacer con un stream:

sisi, me quedaría con tu solución


La franja horaria es GMT +2. Ahora son las 05:35:59.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi