Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-05-2007
JF Sebastian JF Sebastian is offline
Miembro
 
Registrado: oct 2006
Posts: 108
Poder: 18
JF Sebastian Va por buen camino
Ayuda con TFileStream

Estimados foreros:
Tengo el problema de crear un archivo de mas de 2GB de tamaño y debo emplear la rutina seek. El problema es que por defecto esta rutina no sirve para estos tamaños de archivo por lo que he decidido probar con TFileStream.

Se trata de usar TFileStream en lugar de lo siguiente. Unas lineas de codigo por vuestra parte me iria de perlas.

Código Delphi [-]
const 
  max = 1024*1024;
type 
  TArr = array [1..max] of double;
var 
  buf:TArr;
  F: File of TArr;
 
procedure CreaArchivo;
var i: integer;
begin
  AssignFile(F,'C:\1.tmp');
  rewrite(F);
  for i := 1 to 1024 do write(F,buf);
  closefile(F);
end;
 
procedure Busca(pos: Integer);
begin
  AssignFile(F,'C:\1.tmp');
  reset(F);
  Seek(F,Pos);  /// <---  Error
  read(F,buf);
  closefile(F);
end;

Muchas gracias
Responder Con Cita
  #2  
Antiguo 14-05-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿No te sirve algo así?

Código Delphi [-]
var
  Stream: TFileStream;

begin
  Stream := TFileStream.Create('CalendarCombo.dcu', fmOpenRead);

  try
    Stream.Seek(Pos, soBeginning);
    Stream.ReadBuffer(Buf, SizeOf(Buf));
  finally
    Stream.Free;
  end;
end;

// Saludos
Responder Con Cita
  #3  
Antiguo 14-05-2007
JF Sebastian JF Sebastian is offline
Miembro
 
Registrado: oct 2006
Posts: 108
Poder: 18
JF Sebastian Va por buen camino
He intentado hacer un ejemplo de lectura escritura empleando seek pero solo me lee ceros. Ignoro por que.


Código Delphi [-]
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
const max = 1024*1024;
type
  TArr=array[1..max] of double;
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
  buf:Tarr;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var  Stream: TFileStream; pos: integer;
begin
  Stream := TFileStream.Create('c:\1.tmp', fmOpenReadWrite);
  try
    for pos := 0 to 512 do
    begin
      Stream.Seek(Pos, soBeginning);
      Stream.ReadBuffer(Buf, SizeOf(Buf));
      Button1.Caption := IntToStr(Trunc(Buf[1]));
      Application.ProcessMessages;
      Stream.Seek(Pos, soBeginning);
      Stream.WriteBuffer(Buf, SizeOf(Buf));
    end;
  finally
    Stream.Free;
  end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
var  Stream: TFileStream; pos,i: integer;
begin
  Stream := TFileStream.Create('c:\1.tmp', fmCreate);
  try
    for pos := 0 to 512 do
    begin
      fillchar(Buf,sizeof(buf),0);
      for i := 1 to max do Buf[i] := pos;
      Stream.WriteBuffer(Buf, SizeOf(Buf));
      Button2.Caption := IntToStr(Trunc(Buf[1]));
      Application.ProcessMessages;
    end;
  finally
    Stream.Free;
  end;
end;
end.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TFileStream jorge_mosquera Varios 1 03-03-2007 16:28:45
Problema con TFileStream pelaorb68 Varios 9 18-10-2006 20:50:45
Uso de TFileStream esocrates Varios 4 09-04-2005 23:47:17
Escribir un objeto en un TFileStream doverzhoff Varios 3 06-02-2004 04:00:33
TFileStream doverzhoff Varios 1 25-10-2003 18:49:38


La franja horaria es GMT +2. Ahora son las 16:17:21.


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
Copyright 1996-2007 Club Delphi