Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Zeit aus ini zurück (https://www.delphipraxis.net/115952-zeit-aus-ini-zurueck.html)

SaFu 20. Jun 2008 13:29


Zeit aus ini zurück
 
In welchem Format muss ich mir eine Zeit die ich über einen DateTimePicker in eine Ini gespeichert habe, zurückholen

Delphi-Quellcode:
DateTimePicker1.Time:= readString(EinstellungenIni,Uhrzeit,'')// wie muss ich das beim lesen Formatieren
Gruß Sascha

DeddyH 20. Jun 2008 13:32

Re: Zeit aus ini zurück
 
Da TDateTime ja eigentlich Double ist, würde ich sie auch so abspeichern bzw. wieder auslesen.

SaFu 20. Jun 2008 13:37

Re: Zeit aus ini zurück
 
Ok mit dem Double funktioniert das Danke

Gibts da auch später keine Komplikationen, wenn ich das als Double speicher und dann eine Kommazahl in der Ini stehen habe.

Nur mal so gefragt

Luckie 20. Jun 2008 13:39

Re: Zeit aus ini zurück
 
Was du als Double reinschreibst, solltest du als Double auch wieder auslesen können. Probleme könnte nur das Dezimaltrennzeichen machen, welches von den Ländereinstellungen abhängig ist. Aber das ist eher ein generelles Problem.

DeddyH 20. Jun 2008 13:40

Re: Zeit aus ini zurück
 
Wie speicherst Du denn? Hoffentlich mit Ini.WriteFloat, oder?

SaFu 20. Jun 2008 13:44

Re: Zeit aus ini zurück
 
Natürlich

Delphi-Quellcode:
WriteFloat(Einstellungen,Uhrzeit,DateTimePicker1.Time);

DeddyH 20. Jun 2008 13:47

Re: Zeit aus ini zurück
 
Dann sehe ich außer den von Luckie angesprochenen keine weiteren Probleme.

Vjay 20. Jun 2008 13:48

Re: Zeit aus ini zurück
 
Delphi-Quellcode:
function vDateToStr( const date: TDateTime): string;
begin
 DateTimeToString(result, 'yyyy.mm.dd hh:nn:ss', date);
end;

function vStrToDate( const s1: string): TDateTime;
begin
 result:= encodeDateTime( strToIntDef(copy(s1, 1, 4), 0),
                          strToIntDef(copy(s1, 6, 2), 0),
                          strToIntDef(copy(s1, 9, 2), 0),
                          strToIntDef(copy(s1, 12, 2), 0),
                          strToIntDef(copy(s1, 15, 2), 0),
                          strToIntDef(copy(s1, 18, 2), 0), 0);
end;
Ich mache es so, hat den Vorteil, dass es menschenlesbar ist.

SaFu 20. Jun 2008 13:50

Re: Zeit aus ini zurück
 
Ok jetzt ist mir aufgefallen das ich das dann aber nicht vergleichen kann als string

Delphi-Quellcode:
Var sUhrzeit : String;
    dUhrzeit : Float;
    UhrAktuell : String;

UhrAktuell:= (FormatDateTime('HH:mm',now)); // natürlich im Timer

sUhrzeit:= FloatToStr(dUhrzeit);

if UhrAktuell = sUhrzeit then
begin
.
.
.
end;
wie mach ich das jetzt bekomme damit ne Zugriffsverletzung

DeddyH 20. Jun 2008 13:55

Re: Zeit aus ini zurück
 
Was soll denn in dUhrzeit stehen?

RavenIV 20. Jun 2008 13:56

Re: Zeit aus ini zurück
 
Damit Datum / Zeit in lesbarer Form in der ini stehen, kannst Du sie ja mit den DatumZuString-Konvertierungsfunktionen bearbeiten.
Beim Zurücklesen muss Du dann natürlich die dazu passende StringZuDatum-Konvertierungsfunktion verwenden.

Einfach mal in der Delphi-Hilfe unter FormatDateTime oder StrToDate oder DateToStr oder den anderen Funktionen der Unit SysUtils vertraut machen.

SaFu 20. Jun 2008 13:58

Re: Zeit aus ini zurück
 
So

Delphi-Quellcode:
procedure TForm2.DateTimePicker1Change(Sender: TObject);
begin
 Einstellungen:= ExtractFilePath(ParamStr(0))+ 'Einstellungen\Settings.ini';
  begin
   with TMemIniFile.Create(Einstellungen) do
    try
      WriteFloat(EinstellungenINI,Uhrzeitloeschen,DateTimePicker1.Time); // Wert in die ini datei schreiben
      UpdateFile;
    finally
      Free;
  end;
 end;
end;


procedure TForm2.FormShow(Sender: TObject);
 Einstellungen:= ExtractFilePath(ParamStr(0))+ 'Einstellungen\Settings.ini';
  begin
   with TMemIniFile.Create(Einstellungen) do
    try
     dUhrzeit:= ReadFloat(EinstellungenINI,Uhrzeitloeschen,0);
     DateTimePicker1.Time:= ReadFloat(EinstellungenINI,Uhrzeitloeschen,0);
     finally
    Free;
    end;
  end;
end;

DeddyH 20. Jun 2008 14:00

Re: Zeit aus ini zurück
 
Hast Du vielleicht dUhrzeit einmal als globale und einmal als lokale Variable deklariert?

SaFu 20. Jun 2008 14:00

Re: Zeit aus ini zurück
 
Zitat:

Zitat von RavenIV
Damit Datum / Zeit in lesbarer Form in der ini stehen, kannst Du sie ja mit den DatumZuString-Konvertierungsfunktionen bearbeiten.
Beim Zurücklesen muss Du dann natürlich die dazu passende StringZuDatum-Konvertierungsfunktion verwenden.

Einfach mal in der Delphi-Hilfe unter FormatDateTime oder StrToDate oder DateToStr oder den anderen Funktionen der Unit SysUtils vertraut machen.

So hatte ich es Forher auch nur das ich

Delphi-Quellcode:
TimeToStr
hatte und es auch richtig in die ini geschrieben würde nur das lesen wie in meinem 1 Post hat mir da schwirigkeiten gemacht denn

Delphi-Quellcode:
StrToTime
Gibts ja nicht und mit Date geht es auch nicht, weil es Time ist und nicht Date

RavenIV 20. Jun 2008 14:03

Re: Zeit aus ini zurück
 
Zitat:

Zitat von fuknersascha
Delphi-Quellcode:
StrToTime
Gibts ja nicht und mit Date geht es auch nicht, weil es Time ist und nicht Date

Hast Du Dir meinen letzten Satz im vorigen Posting zu Herzen genommen?
In dieser Unit gibt es jede Menge Konvertierungs-Funktionen?

Übrigens gibt es ab Delphi 7 ein StrToTime und TimeToStr.

SaFu 20. Jun 2008 14:09

Re: Zeit aus ini zurück
 
Und genau deshalb habe ich ja auch nachgefragt weil ich ja nichts gefunden habe und immernoch nichts finde.

Vjay 20. Jun 2008 14:10

Re: Zeit aus ini zurück
 
Um das mal abzukürzen worüber ihr Redet, guckt einfach nach oben zu meinem Post, da stehts fertig ;)

SaFu 20. Jun 2008 14:16

Re: Zeit aus ini zurück
 
Ich würde es eigentlich lieber gerne als String habe zum vergleichen ist das für mich einfacher

Einlesen tue ich das so (funzt wunderbar)

Delphi-Quellcode:
WriteString(EinstellungenIni,Uhrzeit,(TimeToStr(DateTimePicker1.Time)));
Auslesen würde ich gerne so aber geht so nicht

Delphi-Quellcode:
DateTimePicker1.Time:= ReadString(EinstellungenIni,Uhrzeit,(StrToTime(0)));
Das ist eigentlich alles was ich wissen möchte

Vjay 20. Jun 2008 14:18

Re: Zeit aus ini zurück
 
Na du konvertierst einen Datentyp in einen String beim schreiben.

Beim Lesen hast du was vergessen, oder?

RavenIV 20. Jun 2008 14:19

Re: Zeit aus ini zurück
 
Zitat:

Zitat von fuknersascha
Auslesen würde ich gerne so aber geht so nicht

Delphi-Quellcode:
DateTimePicker1.Time:= ReadString(EinstellungenIni,Uhrzeit,(StrToTime(0)));

Dann schau Dir mal die Hilfe zu ReadString an.
Das geht so nämlich nicht.

Ausserdem fehlt da (zumindest) ein StrToTime.

DeddyH 20. Jun 2008 14:19

Re: Zeit aus ini zurück
 
Mal ein Beispiel zur Konvertierung und Festlegung eines eigenen Formats:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var s: string;
    sep: char;
    dt: TDateTime;
begin
  //aktuelle Uhrzeit in einem String speichern
  s := FormatDateTime('HH#mm',now);
  //und ausgeben
  ShowMessage(s);
  //alten Timeseparator sichern
  sep := TimeSeparator;
  //und neu setzen
  TimeSeparator := '#';
  //String in TTime konvertieren
  dt := StrToTime(s);
  //alten Timeseparator wiederherstellen
  TimeSeparator := sep;
  //und TTime formatiert ausgeben
  ShowMessage(FormatDateTime('HH:mm',dt));
end;
Zitat:

Delphi-Quellcode:
DateTimePicker1.Time:= ReadString(EinstellungenIni,Uhrzeit,(StrToTime(0)));

Eher so:
Delphi-Quellcode:
DateTimePicker1.Time:= StrToTime(ReadString(EinstellungenIni,Uhrzeit,0));

Vjay 20. Jun 2008 14:20

Re: Zeit aus ini zurück
 
/klugscheiss
Ne ein TimeToStr fehlt, das StrToTime muss nur woanders hin :P

DeddyH 20. Jun 2008 14:22

Re: Zeit aus ini zurück
 
Zitat:

Zitat von Vjay
Ne ein TimeToStr fehlt, das StrToTime muss nur woanders hin

Wo meinst Du jetzt?

RavenIV 20. Jun 2008 14:22

Re: Zeit aus ini zurück
 
Ich klinke mich aus.
Anscheinend will der Threadersteller nicht aus den bisherigen Antworten lernen.

SaFu 20. Jun 2008 14:26

Re: Zeit aus ini zurück
 
Roterkasten

Also mal ganz ehrlich sag mir mal wo das in der Hilfe stehen soll, bezogen auf INI's aber habs ja jetzt

Delphi-Quellcode:
DateTimePicker1.Time:= StrToTime(readString(EinstellungenIni,Uhrzeit,''));


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:13 Uhr.

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