Delphi - almacenamiento y lectura de archivos

 
Vista:

almacenamiento y lectura de archivos

Publicado por EDgar (1 intervención) el 21/11/2008 23:54:26
hola como estan
Soy nuevo en lo que a programacion en lenguaje delphi se refiere, y en la universidad nos pidieron hacer un programa al que se le tiene que poner los datos de un libro (para su clasificacion), este programa debe poder crear, almacenar y leer los archivos que creo.
bueno el programa cuenta con 6 label (codigo, autor, titulo,editorial,nº de ejemplares y precio)
y sus respectivos 6 edits, tambien tiene 5 buttons (crear archivo, guardar, nuevo, abrir y salir), un componente panel (donde se muestra el registro que se esta leyendo por ejem. registro 1 de 2 ) y dos speedbutton que supuestamente deberian cambiar el archivo que se esta leyendo para pasar a otro guardado (y mostrarlo), mi problema e ese, ya hice el programa que crea y lee archivos.
en lo que quisiera que me ayuden es en que este programa lea mas de un registro de libro guardado, ya que al abrir un registro solo me lee ese (registro 1 de 1) y el programa debe cambiar de libro cuando haces click en los speedbuttons ( < > ),(registro 1 de 4, 2 de 4)
si me ayudan se los agradeceria mucho.
el codigo del prgrama es:

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;
type
Tlibro=record
cod:string[8];
tit:string[30];
aut:string[30];
edi:string[20];
nej:word;
pre:real;
end;
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Edit6: TEdit;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Panel1: TPanel;
SpeedButton1: TSpeedButton;
SpeedButton2: TSpeedButton;
Button1: TButton;
Button2: TButton;
Button3: TButton;
SALIR: TButton;
Button5: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure SALIRClick(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
lib:Tlibro;
Fich:file of Tlibro;
NomArch:string;
implementation
{$R *.dfm}
procedure Actualiza;
begin
if not eof(fich) then
begin
read(fich,lib);
seek(fich,filepos(fich)-1);
with lib do
begin
form1.edit1.text:=cod;
form1.edit2.text:=tit;
form1.Edit3.Text:=aut;
form1.edit4.text:=edi;
form1.edit5.text:=inttostr(nej);
form1.edit6.text:=floattostr(pre);
end;
form1.Panel1.caption:='Registro '+inttostr(filepos(fich)+1)+'de '+inttostr(filesize(fich));
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
NomArch:string;
begin
Savedialog1.filter:='Archivos de datos(*.dat)|*.dat|Todos'+'los archivos(*.*)|*.*';
savedialog1.filterindex:=1;
savedialog1.initialdir:='C:Documents and SettingsdAnIeLMis documentosNueva carpeta';
savedialog1.defaultext:='*.dat';
if savedialog1.execute then
begin
NomArch:=Savedialog1.filename;
assignfile(fich,NomArch);
Rewrite(fich);
button3.enabled:=false;
button2.enabled:=true;
edit1.setfocus;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
with lib do
begin
cod:=Edit1.text;
tit:=edit2.text;
aut:=edit3.text;
edi:=edit4.text;
nej:=strtoint(edit5.text);
pre:=strtofloat(edit6.text);
end;
write(fich,lib);
button2.enabled:=false;
button3.enabled:=true;
button3.setfocus;
showmessage('Informacion Guardada');
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
edit1.text:='';
edit2.text:='';
edit3.text:='';
edit4.text:='';
edit5.text:='';
edit6.text:='';
edit1.setfocus;
button2.enabled:=true;
button3.enabled:=false;
end;
procedure TForm1.SALIRClick(Sender: TObject);
begin
if fileexists(NomArch) then
closefile(fich);
close;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
opendialog1.filter:='archivos de datos(*.dat)|*.dat|Todos'+'los archivos(*.*)|*.*';
opendialog1.FilterIndex:=2;
opendialog1.InitialDir:='C:Documents and SettingsdAnIeLEscritorioNueva carpeta';
opendialog1.defaultext:='*.dat';
if opendialog1.execute then
begin
NomArch:=opendialog1.FileName;
assignfile(fich,nomArch);
Reset(fich);
Actualiza;
end;
end;
end.


el button 1 es crear
el button 2 es guardar
el button 3 es nuevo
el button 4 es sair ( ya esta con ese nombre)
y el button 5 es abrir
desde ya muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 65
Oro
Ha mantenido su posición en Delphi (en relación al último mes)
Gráfica de Delphi

RE:almacenamiento y lectura de archivos

Publicado por E.T. (1244 intervenciones) el 22/11/2008 01:51:31
Tu mismo podrías deducirlo con lo que ya tienes:

Para leer el registro anterior sería algo así, para esto ya debe estar cargado el archivo

seek(fich,filepos(fich)-2);
read(fich,lib);
with lib do
begin
form1.edit1.text:=cod;
form1.edit2.text:=tit;
form1.Edit3.Text:=aut;
form1.edit4.text:=edi;
form1.edit5.text:=inttostr(nej);
form1.edit6.text:=floattostr(pre);
end;

Para leer el siguiente

read(fich,lib);
with lib do
begin
form1.edit1.text:=cod;
form1.edit2.text:=tit;
form1.Edit3.Text:=aut;
form1.edit4.text:=edi;
form1.edit5.text:=inttostr(nej);
form1.edit6.text:=floattostr(pre);
end;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:almacenamiento y lectura de archivos

Publicado por matias (1 intervención) el 03/12/2008 21:17:25
hola edgar yo tengo la misma pregunta que vos... estoy empezando con esto de archivos y me esta quemando la cabeza la misma pregunta ^^ sospecho que se solucionará con alguna variable del tipo file of (algun ¨arreglo¨ de registros). Pero traté y no le encuentro la vuelta. Si encuentro la rta te aviso. Ojalá la conteste algún entendido en este mismo foro! QUE YA SOMOS 2
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar