PDA

Ver la Versión Completa : Leer 4 Lineas de dos Archivo .txt


wcbs
01-09-2012, 21:53:20
Hola a los miembros de este foro

soy nuevo por acá y también en el mundo de delphi, yo estoy tratando de hacer una aplicación que al
Presionar la tecla F6 del teclado me cargue la aplicación y me leea 4 lineas de dos archivo de texto.txt,
pero con los ejemplos que e encontrado, solo puedo leer una linea pero no e podido lograr que me muestre
la información de las demás, los dos archivos de texto lo que tienen son números y quiero que al ejecutar
la aplicación me muestro los números que están en la linea que son la tercera y quinta linea de cada archivo,
me gustaria si es posible que me dieran una mano para hacer esta aplicacion.

de antemano les doy las gracias....

Casimiro Notevi
01-09-2012, 22:03:35
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php)?, gracias por tu colaboración :)


¿Y tu código?, deja que lo veamos para ayudarte, que no somos adivinos ;)

wcbs
01-09-2012, 23:06:37
Gracias Casimiro Notevi
por tu pronta repuesta y también por darme la bienvenida al foro, te comento que ya e logrado ver dos de las lineas
pero sigo haciendo pruebas, me falta ver como hago para llamar el otro archivo y presentarlo en dos Tedit mas,

esto es lo que llevo asta ahora....
-----------------------------------------

unit Metros;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Edit2: TEdit;
Label2: TLabel;
Button2: TButton;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
Datos: TextFile;
TS: TStrings;
TSA: TStrings;
Linea: String;
NumLinea: integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
AssignFile(Datos,'C:\Games\BOOKS\C2006.DAT');
Reset(Datos);
NumLinea := 0;
REPEAT

TS:= TStringList.Create;
Readln(Datos, Linea);
Inc(NumLinea);
UNTIL NumLinea = 4;
TS.Clear;
ExtractStrings(['|'], [], PChar(Linea), TS);
Edit1.Text:= TS.Text;
REPEAT
TSA:= TStringList.Create;
Readln(Datos, Linea);
Inc(NumLinea);
UNTIL NumLinea = 5;
TSA.Clear;
ExtractStrings(['|'], [], PChar(Linea), TSA);
Edit2.Text:= TSA.Text;

CloseFile(Datos);

end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;

end.
--------------------------------------------------------------
todavía en este no tengo agregado la forma de ejecutar al presionar la tecla F6 del teclado, porque voy probando
en otro archivo y lo que me sale bien lo paso a este, como veras es cosa de principiante, pero con animo de ir
aprendiendo

Gracias...de nuevo y me dirás como mas ir adelantado

Casimiro Notevi
01-09-2012, 23:09:59
No he entendido exactamente lo que quieres hacer.

wcbs
01-09-2012, 23:39:44
Ok...Casimiro Notevi

Yo tengo dos archivos de datos que también son de texto, en la cuarta linea y quinta linea, tienen numero
yo quiero que al ejecutar la aplicación que estoy haciendo, me lea las lineas de los dos archivos y me muestre los números
que hay en esas lineas, ahora bien, ya e logrado ver de un archivo la 4 y 5 linea, pero no se como cargar el otro
archivo para en dos campos mas me muestre también la linea 4 y 5 de ese otro archivo,

la otra parte es hacer que cuando yo presione la tecla F6 se cargue esta aplicación y me muestre la información,
osea los números que hay en esas lineas.

no se si no me comprenderás mejor.

y Gracias de nuevo ya que me sorprende lo rápido que responde e intenta ayudarme también....

Casimiro Notevi
02-09-2012, 00:40:44
O sea, tienes 2 ficheros de texto iguales, y cada uno de ellos tienen las líneas 4 y 5 (que tienen números), pueden ser así:
bla, bla, bla, bla,
bla, bla, bla, bla,
bla, bla, bla, bla,
1,2,3,4,5,
6,7,8,9,0

Ambos son de ese tipo, ¿es así?

wcbs
02-09-2012, 01:38:46
Ok..
mas o menos es la idea, pero mira en esta forma tienen cada archivos los números,
------------------------------------------
1.000000
0.000000
12
1020.000000 <------- Esta es una de la linea
393.701508 <-------- Esta es la otra a mostrar
1456
0
0.000000
0.000000
0
401.700012
363.350006
92
0
0.000000
0.000000
0
72.699997
56.099998
44
----------------------------------------
La cuarta y quinta linea son las que quiero que me muestre el programa, por ejemplo, un archivo se llama C2006.DAT y el Otro CR.DAT ambos aunque son .dat son de texto, en cada uno los números varían pero tiene las lineas iguales, como te explico mas arriba ya puedo leer un archive, pero quiero leer los dos archivos en 4 campos del del programa....

ecfisa
02-09-2012, 01:57:51
La cuarta y quinta linea son las que quiero que me muestre el programa
Hola wcbs.

Me parece que te estas complicando con algo que es muy simple.

Un ejemplo:

var
linea4, linea5: string;
begin
with TStringList.Create do
try
LoadFromFile('C:\RUTA\C2006.DAT');
linea4 := Strings[3];
Linea5 := Strings[4];
// aquí ya tenes las lineas deseadas en las variables linea4 y linea5
finally
Free;
end;
ShowMessage(linea4+#10+linea5); // mostrarlas


Saludos. :)

wcbs
02-09-2012, 03:02:45
Exelente amigo ecfisa Usted es un Master

por eso es que hay que preguntar, me lee bien el archivo, ahora debo hacer que me lea el otro archivo para mostrar
en la misma ventana las otras dos lineas, recuerda que son dos archivos que debo de leer, me imagino que debo declara
dos variable mas y cargar el segundo archivo...

esto fue lo que le estuve que agregar, para que me lo muestre asi, en ves de en un ShowMessage...

Edit1.Text:= Linea4;
Edit2.Text:= Linea5;
//ShowMessage(linea4+#10+linea5); // mostrarlas
......................................................................

Ahora bien...la otra pregunta, como hago para hacer que al presionar F6, me cargue la aplicación, yo e mirado estos comentarios que para ejecutar el archivo debe ser con esta instrucción

if GetAsyncKeyState( VK_F6 ) = -32767 then

WinExec(PChar('c:\Metros\metros.exe'),SW_SHOWNORMAL);

pero todavía no logro que me cargue la aplicación, me puedes indicar como hacerlo

Gracias....

Casimiro Notevi
02-09-2012, 10:05:47
Recuerda poner los tags al código fuente, ejemplo:

http://neftali.clubdelphi.com/images/UtilizarTAGs.png


Por cierto, echa un vistazo a nuestro repositorio (http://terawiki.clubdelphi.com/), encontrarás varios gigas de información, entre ellos también libros de programación delphi.
Es que tus dudas son básicas, como si estuvieses preguntando cómo sumar 1 manzana y 2 manzanas. Y después preguntas cómo harías si en lugar de manzanas son plátanos :confused:

wcbs
02-09-2012, 14:25:47
Gracias amigo Casimiro Notevi

es como les comentaba mas arriba, soy nuevo en esto de programación en delphi, mi poco conocimiento
de programación son pequeños ya que cuando llegue a hacer algún pequeñito programa había que crear
enormes archivos llenos de comando a diferencia de ahora que con pocas instrucciones se hacen mas cosas

también te agradezco la ayuda y pasare por los repositorios para seguir aprendiendo..


Gracias...

Casimiro Notevi
02-09-2012, 14:46:09
Por supuesto, un libro ;)

Ya ecfisa te ha escrito el código que necesitas, para otro fichero de texto es sólo repetirlo.
En plan rápido:


var linea4, linea5,
linea4b, linea5b: string;
begin
with TStringList.Create do
try
LoadFromFile('C:\RUTA\C2006.DAT'); // *********** un fichero
linea4 := Strings[3];
Linea5 := Strings[4]; // aquí ya tenes las lineas deseadas en las variables linea4 y linea5
finally
Free;
end;
ShowMessage(linea4+#10+linea5); // mostrarlas

with TStringList.Create do
try
LoadFromFile('C:\RUTA\C2007.DAT'); // *********** otro fichero
linea4b := Strings[3];
Linea5b := Strings[4]; // aquí ya tenes las lineas deseadas en las variables linea4 y linea5
finally
Free;
end;
ShowMessage(linea4b+#10+linea5b); // mostrarlas

ShowMessage(linea4+#10+linea5+#10+linea4b+#10+linea5b); // mostrarlas todas ----
end;

Casimiro Notevi
02-09-2012, 14:49:11
Y recuerda nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php), gracias por tu colaboración :)

wcbs
05-09-2012, 15:05:36
Hola Casimiro Notevi

Disculpa la que no halla respondido antes ya que estaba fuera de la ciudad. acabo de probar estas instrucciones
y trabajan excelente, ahora seguiré haciendo la otra parte para poder terminal.

Mean sido de mucha ayuda, cualquier otra inquietud ya les comentare.

Muchas Gracias de Nuevo....