Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   aplicacion para reportar resultados (https://www.clubdelphi.com/foros/showthread.php?t=68089)

gmontes 24-05-2010 06:20:48

aplicacion para reportar resultados
 
a ver si me se explicar.

en mi empresa tienen un viejo programa en basic que lo que hace es tomar un archivo texto, que es como una plantilla para llenar resultados de estudios de laboratorio.

tienen mas de 200 archivos texto diferentes :(

cada archivo se compone de lo siguiente:


prueba x de y [......... ] valores entre xxxx y xxxx

esta pruebas etc etc

prueba z de f [ ......... ] valores entre xxxx y xxxx


y asi con los diferentes 200 archivos


este programa toma el archivo y lo pone en pantalla y solo se posiciona en los campos entre corchetes para su llenado y luego lo imprime. no guarda ningun resultado ni modifica el archivo texto ya que solo le sirve de plantilla para su llenado e impresion

la idea seria tomar los archivos de texto y hacer lo mismo en delphi para no tener que reproducir 200 archivos diferentes o eso creo

alguna idea de como debo atacar este asunto ????

ecfisa 24-05-2010 09:45:02

Hola gmontes.

No tengo muy en claro como se seleccionan los archivos y algún detalle más.

Pero, a ver se me ocurre, para respetar el viejo formato usar un TStringGrid
con tres columnas, poner FixedCols y FixedRows a False y cargar en la primera
columna el texto hasta encontrar el caracter '[' y en la tercera columna el resto de la cadena a
partir del caracter ']', quedando la segunda para el ingreso.

También habría que prohibir que se posicionen en la primera y tercera columna.
Hice una pequeña prueba, sin comprobaciones del tipo y cantidad de caracteres que pueden
ingresar por ejemplo.Y por supuesto sin impresión. (es sólo un bosquejo)

El ejemplo genera un archivo 'PRUEBA.TXT' donde quedan guardadas las líneas con lo tipeado por el usuario.
Código Delphi [-]
...
implementation
{ Impedir acceso a líneas 0 y 2 }
procedure TForm1.StrGrdSelectCell(Sender: TObject; ACol, ARow: Integer;
  var CanSelect: Boolean);
begin
  CanSelect:= ACol = 1;
end;
{ Abrir uno de los 200 y pasarlo al StringGrid }
procedure TForm1.btAbrirClick(Sender: TObject);
var
  txt: TextFile;
  lin: Integer;
  st: string;
begin
  if OpenDialog1.Execute then
  begin
    AssignFile(txt,OpenDialog1.FileName);
    Reset(txt);
    lin:= 0;
    while not Eof(txt) do
    begin
      ReadLn(txt,st);
      StrGrd.Cells[0,lin]:= Copy(st,1,Pos('[',st));
      StrGrd.Cells[2,lin]:= Copy(st,Pos(']',st),Length(st));
      Inc(lin);
    end;
    CloseFile(txt);
    StrGrd.Row:=0; StrGrd.Col:=1;
  end;
end;
{ Guardar en archivo, imprimir o lo que sea }
procedure TForm1.btGuardarClick(Sender: TObject);
var
  txt: TextFile;
  i: Integer;
begin
  AssignFile(txt,'C:\TEMP\PRUEBA.TXT');
  Rewrite(txt);
  for i:= 0 to StrGrd.RowCount-1 do
    with StrGrd do
      WriteLn(txt,Cells[0,i]+Cells[1,i]+Cells[2,i]);
  CloseFile(txt);
end;
end.

Espero te sirva y saludos

gmontes 24-05-2010 15:57:58

gracias por la respuesta.

lo que se busca es reproducir lo que hace el antiguo programa

tanto la captura como el reportar los estudios

juanelo 24-05-2010 16:20:43

Pues para mi la idea de las plantillas es buena y no veo porque cambiarla, ahora bien, yo lo que haria con Delphi, es llenar una tabla que se crea al "vuelo", con los campos "corchetes" y asi solicitarselos al usuario.
Sigues usando las plantillas y la aplicacion puede usarse para futuras plantillas.
Saludos.

ecfisa 24-05-2010 23:06:17

Hola.

Cita:

este programa toma el archivo y lo pone en pantalla y solo se posiciona en los campos entre corchetes para su llenado y luego lo imprime. no guarda ningun resultado ni modifica el archivo texto ya que solo le sirve de plantilla para su llenado e impresion.
Si no entendí mal lo arriba expuesto, eso es exactamente lo que hace el ejemplo posteado: Toma el archivo de texto, lo pone en pantalla, se posiciona en los campos entre corchetes permite el llenado y luego lo imprime sin alterarlo...

Saludos.


La franja horaria es GMT +2. Ahora son las 17:41:15.

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