Lukker fordi du har løst det eller lukker fordi du ikke tror nogen svarer?
Løsningen er ret let:
uses DateUtils;
function StrDateDiff(aSt1, aSt2: string): TDateTime;
function MyStrToTime(aSt: string): TDateTime; var hh,mm,ss,s100: word; begin hh := StrToInt(copy(aSt,1,2)); mm := StrToInt(copy(aSt,4,2)); ss := StrToInt(copy(aSt,7,2)); s100 := StrToInt(copy(aSt,10,4)); result := EncodeTime(hh,mm,ss,s100); end;
var Time1, Time2: TDateTime; begin Time1 := MyStrToTime(aSt1); Time2 := MyStrToTime(aSt2); result := Time2 - Time1; end;
procedure TfrmMain.btnTestClick(Sender: TObject); begin eOutput.Text := TimeToStr(StrDateDiff(eTime1.Text,eTime2.Text)); end;
arne: Den overvejede jeg også men valgte den hårdkodede løsning, fordi jeg tit sidder med data fra eksterne kilder og der må man alligevel programmere sig ud af det - men ja. Det sidste eksempel du nævner, er en fin løsning. Et skoleeksempel.
Du får også milisekunderne med. Desværre konverterer TimeToStr dem ikke til en streng - og jeg har ikke kunne finde en der gør det; man må lave det selv:
procedure TfrmMain.btnTestClick(Sender: TObject); var hh,mm,ss,s100: word; begin DecodeTime(StrDateDiff(eTime1.Text,eTime2.Text),hh,mm,ss,s100); eOutput.Text := format('%-2d:%-2d:%-2d:%-3d',[hh,mm,ss,s100]); end;
Rettede: eOutput.Text := format('%-2d:%-2d:%-2d:%-3d',[hh,mm,ss,s100]); Til: eOutput.Text := format('%.2d:%.2d:%.2d:%.3d',[hh,mm,ss,s100]); Så virkede det lige som det skulle Læg svar for point
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.