PDA

Ver la Versión Completa : Crear fichero


angelp4492
29-01-2008, 22:27:26
Hola como estan;
Pues bien me surge una duda a la hora de crear y abrir un fichero a partir de datos que tenemos en un programa, en concrto pretendo hacer esto

1.-tengo un boton q al pulsar se abre el cuadro de dialogo de guardar esto es con svedialog
2.-en el nombre q lo pongamos al fichero quiero que se guarden los datos que tengo en tlabel y tedit que tengo en el programa, con la extension que le designemos.

3.-tengo otro boton de abrir fichero (opendialog) cuando carguemos el fichero los datos de este deben asignarse a los tlabel y tedit correspondientes segun grabados antes....
Alguna idea gracias..

cHackAll
29-01-2008, 22:38:38
procedure TForm1.Button1Click(Sender: TObject);
var Archivo: TextFile;
begin
if SaveDialog1.Execute then
begin
AssignFile(Archivo, SaveDialog1.FileName);
{$i-} Rewrite(Archivo); {$i+}
if LongBool(IOResult) then
begin
ShowMessage('Error de pacotilla :P'#13'No lo pude guardar pues...');
Exit;
end;
WriteLn(Archivo, Label1.Caption);
WriteLn(Archivo, Edit1.Caption);
CloseFile(Archivo)
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var Archivo: TextFile; Linea: string;
begin
if OpenDialog1.Execute then
begin
AssignFile(Archivo, OpenDialog1.FileName);
{$i-} Reset(Archivo); {$i+}
if LongBool(IOResult) then
begin
ShowMessage('GRrrr');
Exit;
end;
ReadLn(Archivo, Linea); Label1.Caption := Linea;
ReadLn(Archivo, Linea); Edit1.Caption := Linea;
CloseFile(Archivo)
end;
end;

angelp4492
29-01-2008, 23:01:58
Gracias funciona perfecto

angelp4492
30-01-2008, 00:02:46
Me funciona to do perfecto chakall pero ahora tengo un problema, y es q tengo q mostrar datos en un combobox, los muestro con la propiedad itemindex, pero el problema esq en el combobox me aparece el dato pero no hace los calculos o sea que es como si lo tuviese a cero, q es el valor que le tengo puesto en el case of cuando el itemindex es -1 o sea que no esta selecionado.

ixMike
30-01-2008, 00:09:08
... tengo q mostrar datos en un combobox...
...no hace los calculos o sea que es como si lo tuviese a cero...
...en el case of cuando el itemindex es -1 o sea que no esta selecionado.

Lo siento, pero no se ha entendido nada. ¿Qué no está seleccionado? ¿Qué cálculos ha de hacer? ¿Qué es para ti "tenerlo a cero"?

Es más, ¿qué ComboBox?

Si esto no tiene nada que ver con la duda anterior, abre un nuevo post. Y, por favor, explícate de forma un poco más clara y ordenada.


Saludos.

angelp4492
30-01-2008, 00:24:15
vale perdon

tengo esto en un combobox
procedure TForm1.ComboBox14Change(Sender: TObject);
begin
case combobox14.ItemIndex of
-1:begin psos:=0 end;//
0:begin psos:=8 end;//
1:begin psos:=8 end;
2:begin psos:=0 end;
end;
end;

y como bien me has dicho antes lo grabo en un fichero con

WriteLn(Archivo, combobox1.ItemIndex );

pues bien ahora cuando abro el fichero como tb me has dicho antes pongo.

ReadLn(Archivo, Linea); combobox1.ItemIndex := StrToInt(Linea);


y en el combobox se me selecciona el items que he guardado.
por ejemplo si seleccione en el combobox segundo que tiene itemindex(2).
cuando cargo el archivo se me selecciona segundo en el combobox hasta ahora bien.

pero luego tengo que multiplicar por ejemplo 5*valor del itemindex y me da cero. es como si no estuviera nada seleccionado y me coje el cero que es como el itemindex=-1 que es 0;

ixMike
30-01-2008, 00:52:41
vale perdon

Tranquilo, no pasa nada :)


procedure TForm1.ComboBox14Change(Sender: TObject);
begin
case combobox14.ItemIndex of
-1:begin psos:=0 end;//
0:begin psos:=8 end;//
1:begin psos:=8 end;
2:begin psos:=0 end;
end;
end;


Procura utilizar las etiquetas DELPHI para encerrar el código, queda más elegante ;). Un consejo: si en las opciones de case sólo va una línea de código, no es necesario poner begin accion end;

Quedaría:


procedure TForm1.ComboBox14Change(Sender: TObject);
begin
case combobox14.ItemIndex of
-1: psos:=0;
0: psos:=8;
1: psos:=8;
2: psos:=0;
end;
end;





y como bien me has dicho antes lo grabo en un fichero con

WriteLn(Archivo, combobox1.ItemIndex );

pues bien ahora cuando abro el fichero como tb me has dicho antes pongo.

ReadLn(Archivo, Linea); combobox1.ItemIndex := StrToInt(Linea);


Aquí está el problema. Al igual que al leer el dato haces la conversión StrToInt, al grabarlo tienes que hacer la conversión IntToStr:


WriteLn(Archivo, IntToStr(combobox1.ItemIndex) );



Creo que ya está :)


Salu2 ;)