Delphi legge la riga successiva e la sostituisce
Domanda
Ho un programma che importa un file di testo con molte voci:
###
Starttime: 06.03.2008
Data: SOME RECORDS HERE
###
Starttime: 21.03.2008
Data SOME RECORDS HERE
... e così via
Non voglio avere un orario di fine dopo " Dati: " quello è il prossimo inizio -1 quindi ho
###
Starttime: 06.03.2008
Data: SOME RECORDS HERE
EndTime: 20.03.2008
###
Starttime: 21.03.2008
Data SOME RECORDS HERE
EndTime: (next starttime -1)
... e così via
Soluzione
Il modo più semplice sarebbe leggere il file in un TStringList
e lavorare lì.
Pseudocodice:
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;
Questo codice non è molto affidabile, non controlla eventuali casi speciali, come la prima data di inizio, ma dovrebbe essere sufficiente per iniziare.
Altri suggerimenti
Bene, dovrai copiare il file riga per riga e inserire le nuove righe al momento giusto. Non puoi spostare elementi in un file di testo.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow