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

È stato utile?

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
scroll top