Delphi lee la siguiente línea y reemplaza
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
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