Pregunta

Tengo un programa que importa un archivo de texto que tiene muchas entradas:

###
Starttime: 06.03.2008
Data: SOME RECORDS HERE

###
Starttime: 21.03.2008
Data SOME RECORDS HERE

... y así sucesivamente

No quiero tener una hora de finalización después de " Datos: " esa es la próxima hora de inicio -1, así que tengo

###
Starttime: 06.03.2008
Data: SOME RECORDS HERE
EndTime: 20.03.2008

###
Starttime: 21.03.2008
Data SOME RECORDS HERE
EndTime: (next starttime -1)

... y así sucesivamente

¿Fue útil?

Solución

La forma más fácil sería leer el archivo en un TStringList y trabajar allí.

Seudocódigo:

var 
  S: TStringList;
  i: Integer;
  LastDate: TDateTime;
  CurDate: TDateTime;
begin
  S := TStringList.Create;
  S.LoadFromFile('c:\...');

  i := 0;
  while i < S.Count do
  begin
    if S[i] = "###" then
    begin
      CurDate := StrToDate(S[i+1])
      S.Insert(i-3, DateToStr(CurDate));
      LastDate := CurDate;
      i := i+2;
    end else
    begin
      i := i+1;
    end;
  end;
  S.SaveToFile('c:\...');
end;

Este código no es muy robusto, no revisa ningún caso especial, como la primera fecha de inicio, pero debería ser suficiente para que comience.

Otros consejos

Bueno, tendrá que copiar el archivo, línea por línea, e insertar las nuevas líneas en el momento adecuado. No puedes cambiar cosas en un archivo de texto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top