Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TimeStamp hh:mm:ss mit Zeit ersetzen (https://www.delphipraxis.net/42362-timestamp-hh-mm-ss-mit-zeit-ersetzen.html)

Roki_ 17. Mär 2005 20:03


TimeStamp hh:mm:ss mit Zeit ersetzen
 
Hallo,

ich möchte meinen TimeStamp mit jeweils der Zeit ersetzten, dazu habe ich eine function geschrieben wo ich aber den fehler
"[Error] Unit1.pas(420): E2010 Incompatible types: 'Char' and 'string'" erhalte. (hier Zeile 23)

Delphi-Quellcode:
function timestamp(): String;
var
ini: TIniFile;
timestamp: string;
begin

ini := TIniFile.Create(GetCurrentDir() + '\config.ini');
 try
  timestamp := ini.ReadString('log', 'timestamp', '');
  if timestamp <> '' then
   begin
    timestamp := ini.ReadString('log', 'timestamp', '');
   end
  else
   begin
    timestamp := '[hh:mm:ss]';
  end;
 finally
  ini.Free;
 end;

timestamp[pos('hh',timestamp)] := copy(TimeToStr(now),1,2);  // replace hour
timestamp[pos('mm',timestamp)] := copy(TimeToStr(now),4,2);  // replace minutes
timestamp[pos('ss',timestamp)] := copy(TimeToStr(now),7,8);  // replace seconds

result := timestamp;
end;
Lösung?

mfg
Roki

Ultimator 17. Mär 2005 20:44

Re: TimeStamp hh:mm:ss mit Zeit ersetzen
 
Delphi-Quellcode:
timestamp[pos('hh',timestamp)] := copy(TimeToStr(now),1,2);  // replace hour
timestamp[pos('mm',timestamp)] := copy(TimeToStr(now),4,2);  // replace minutes
timestamp[pos('ss',timestamp)] := copy(TimeToStr(now),7,8);  // replace seconds
Klar, dass das nix werden kann ;-)
timestamp[bla] spricht nur ein einziges Zeichen an (Char), und das kannst du ja nicht mit zwei Zeichen ersetzen, denn zwei Zeichen sind ja wieder ein String ;-)
Du könntest dir die Position von "hh" in eine Variable speichern, dann von dieser Position aus 2 Zeichen löschen (die Länge von "hh" eben ;-)) und dann an der gemerkten Stelle die aktuelle Stundenzahl einfügen ;-)

Ganz elegant wäre natürlich
Delphi-Quellcode:
timestamp := StringReplace(timestamp, 'hh', copy(TimeToStr(now),1,2),[rfIgnoreCase]);
:zwinker:

Roki_ 17. Mär 2005 20:48

Re: TimeStamp hh:mm:ss mit Zeit ersetzen
 
ahh danke sehrgut.. wieder was gelernt

Luckie 17. Mär 2005 21:09

Re: TimeStamp hh:mm:ss mit Zeit ersetzen
 
Zitat:

Zitat von Roki_
Delphi-Quellcode:
ini := TIniFile.Create(GetCurrentDir() + '\config.ini');

Und das geht nur mit Spucke und viel Glück gut.

Matze 17. Mär 2005 21:16

Re: TimeStamp hh:mm:ss mit Zeit ersetzen
 
Zitat:

Zitat von Luckie
Und das geht nur mit Spucke und viel Glück gut.

Dann sag doch gleich, wie man es machen sollte. ;)

Delphi-Quellcode:
ini := TIniFile.Create(IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))) + 'config.ini');

Sprint 17. Mär 2005 21:25

Re: TimeStamp hh:mm:ss mit Zeit ersetzen
 
IncludeTrailingPathDelimiter kannst du weglassen, weil ExtractFilePath als letztes Zeichen immer ein "\" hat.

Roki_ 18. Mär 2005 11:41

Re: TimeStamp hh:mm:ss mit Zeit ersetzen
 
Ok... was ist an GetCurrentDir() so schlimm?

cu Roki


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:33 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz