Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Datum + Zeit + Ini
chickenfigt1989 - Mo 15.08.11 22:42
Titel: Datum + Zeit + Ini
Hallo,
Wie kann ich aus einer Ini datei eine Uhrzeit auslesen und der variable Zielzeit zuweisen?
Mit folgenden klappt es leider nicht:
Delphi-Quelltext
1:
| Zielzeit:=ini.ReadDate('Daten', 'Zeiten', ''); |
lg
elundril - Mo 15.08.11 22:46
Warum funktionierts denn nicht? Was sagt dir der Compiler denn?
lg elundril
chickenfigt1989 - Mo 15.08.11 22:48
[Error] Unit1.pas(80): Incompatible types: 'TDateTime' and 'String'
Nur wie geht es den richtig?
hab schon soviel getestet
acnut - Mo 15.08.11 23:18
probiers mal mit strtotime(blabla)
FinnO - Mo 15.08.11 23:18
Du hast den defaultwert auch auf '' und nicht auf ein Datum (z.B. now) gesetzt.
Fehlermeldungen lesen hilft.
chickenfigt1989 - Mo 15.08.11 23:24
Wenn ich es so mache kommt eine Acces Violation:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.FormActivate(Sender: TObject); var ini: TIniFile; begin Zielzeit:= Ini.ReadDateTime('Daten', 'Zeiten', Zielzeit); end;
end. |
Und hier:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.FormActivate(Sender: TObject); var ini: TIniFile; begin Zielzeit:= Ini.ReadDateTime(strtotime('Daten', 'Zeiten', Zielzeit)); end;
end. |
Kommt folgendes:
Delphi-Quelltext
1:
| [Error] Unit1.pas(79): Too many actual parameters |
lg
Nachtrag:
Hier ist der defaultwert nicht auf 0
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| procedure TForm1.Button1Click(Sender: TObject); var ini: TIniFile; filename: String; begin filename := ExtractFilePath(ParamStr(0)) + 'einstellungen.ini'; ini := TIniFile.Create(filename);
Zielzeit := now + 1;
try ini.WriteDateTime('Daten','Zielzeit',Zielzeit); finally ini.Free; end;
Timer1.Enabled:=true;
end; |
jaenicke - Mo 15.08.11 23:56
chickenfigt1989 hat folgendes geschrieben : |
| Wenn ich es so mache kommt eine Acces Violation: |
Du hast das ini Objekt nicht erstellt.
chickenfigt1989 hat folgendes geschrieben : |
Kommt folgendes:
Delphi-Quelltext 1:
| [Error] Unit1.pas(79): Too many actual parameters | |
StrToTime erwartet nur einen String. Du musst also wie gestern auch StrToTime auf einen aus der Ini ausgelesenen String anwenden.
Den Code hast du doch dort auch schon gehabt:
chickenfigt1989 hat folgendes geschrieben : |
Delphi-Quelltext 1:
| Zeit:=StrtoTime(ini.ReadString('Zeit','Zeit1','')); |
Oh mann habs doch geschnallt |
chickenfigt1989 - Di 16.08.11 00:08
Danke hat geklappt.
Habe nun folgenden Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IniFiles, ExtCtrls, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; Timer1: TTimer; procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormActivate(Sender: TObject); private Zielzeit: TDateTime; public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var ini: TIniFile; filename: String; begin filename := ExtractFilePath(ParamStr(0)) + 'einstellungen.ini'; ini := TIniFile.Create(filename);
Zielzeit := now + 1;
try ini.WriteDateTime('Daten','Zielzeit',Zielzeit); finally ini.Free; end;
Timer1.Enabled:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject); begin Label1.Caption:= TimeToStr(zielzeit - now);
if now >= Zielzeit then begin Showmessage('Klappt'); Timer1.enabled:=false; end;
end;
procedure TForm1.FormActivate(Sender: TObject); var ini: TIniFile; filename: String; begin filename := ExtractFilePath(ParamStr(0)) + 'einstellungen.ini'; ini := TIniFile.Create(filename);
StrtoDateTime(ini.ReadString('Daten','Zielzeit','')); end;
end. |
Wenn ich das Programm starte ---> Button klick ---> Programm beende ---> Programm neu starte wieso wird die restzeit dan nicht im label angezeigt?
bummi - Di 16.08.11 07:51
Schau Dir mal Zeile 81 an un überlege was Du da eigentlich schreiben wolltest....
Horschdware - Di 16.08.11 09:42
Also Sorry, jetzt geht mir hier aber die Hutschnur hoch!! :evil: :evil:
Chickenfight, was du hier machst ist echt unter aller Kanone!
Zur Info: Wir haben uns gestern knapp eine Stunde im ICQ unterhalten, nachdem chicken mich zuvor hier im Forum mehrfach per PN gebeten hatte ihm zu helfen. Die ausführliche Anleitung per PN, wie man das Projekt umsetzt und welche Schlüsselwörter in der Suche zum Erfolg führen (inklusive Beispiele) haben wohl nicht gereicht.
Also eine ganze Stunde Zeit aufgebracht, um per ICQ die letzten Unklarheiten zu beseitigen und sogar ein Bisschen Grundlagenwissen zu vermitteln. Dazu gabs Codebeispiele und Hilfestellung jeglicher Art. Sogar das halbe Projekt haben wir so umgesetzt. Warum? Aus reiner Nächstenliebe, Altruismus, nennt es wie ihr wollt...
Dummerweise wurde NICHTS - und ich wiederhole das: NICHTS - von dem, was ich gesagt hatte sinnvoll umgesetzt. Stets ein Copy&Paste ohne nachzudenken. Eine Variable heisst anders? Egal. Variable ist schon Deklariert? Egal, in der Methode nochmal deklarieren. Vergleiche zweier Variablen? Keine Ahnung wie das geht. Und so weiter und so fort.
Jeglicher Unsinn den man sich eben vorstellen kann.
Grundlagen verstanden: Nein.
Ratschläge und Anleitungen befolgt: Nein.
Buch gekauft: Nein (5 EUR sind zu teuer).
Tutorial gelesen: ja, aber nichts verstanden.
Und jetzt kommt heute morgen (Nacht) hier ein Thread, der die letzten paar Codezeilen, die du dir hättest LOCKER zusammenreimen können (anhand von dem was ich dir geschrieben habe) und bittest darum, dass dir das jemand macht. Noch nicht einmal die Ini sprichst du richtig an, obwohl ich dir das einmal komplett geschrieben habe - mit allem drum und dran.
Und dann kommt noch dazu, dass du hier diesen "Quelltext"(-stummel) postest, meine Kommentare entfernt hast und - da ich mit keinem Wort erwähnt werde - ihn wohl als deinen eigenen ausgibst.
Sag mal, schämst du dich nicht?
Zitat: "Ich lerne eher durch rumprobieren". Nein, tust du nicht. Du lernst nichts.
Wenn man jetzt inzwischen vier(!) Wochen für läppische 30 Zeilen Code benötigt, dann hat das Ganze keinen Sinn. Insbesondere wenn man dazu noch andere Personen miteinbindet und deren Hilfe ignoriert.
Chickenfigt, ich bin gerade so was von sauer, das glaubst du mir nicht! :evil:
PS:
@Rest: TInifiles kennt ein ReadDateTime. Da spart man sich die manuelle Umwandlung. :idea:
noch ein edit:
chicken: hör bitte ENDLICH auf, hier ständig komplette Quelltexte zu posten und zu schreien "geht nicht", bevor du dir keine eigenen Gedanken zum Problem gemacht hast.
Wie die Restzeit ausgegeben wird und dass du beim Programmstart, wenn die Zielzeit geladen wurde den Timer starten musst, das hatten wir gestern AUCH geklärt!
Xion - Di 16.08.11 11:00
TIniFiles sind wirklich einfach zu nutzen.
Ein super Tutorial gibts hier:
http://www.kuknet.de/tutorial1.pdf
Ich glaube es gibt niemanden, der das nicht kapiert...
DonManfred - Di 16.08.11 14:34
Xion hat folgendes geschrieben : |
| Ich glaube es gibt niemanden, der das nicht kapiert... |
Sorry das ich das schreiben muss aber wie es scheint hast Du die - sehr stark ausgebildete(!) - Lernrsistenz von chickenfight nicht beachtet. :D
Der Post über deinen sagt eigentlich alles. :-/
Nichts desto trotz bewundere ich (Hut ab davor!) die Mühen die sich hier so manche geben (Horschdware, jaenicke, Du um nur ein paar zu nennen) um Chicken IMMER WIEDER helfen zu "wollen". Auch wenn er es schon dutzenderweise bewiesen hat, das er scheinbar nicht LernFÄHIG ist. Er war, ist und wird wohl auch immer ein C&P-Programmierer bleiben. Schade eigentlich das er die gutmütigkeit der User hier immer wieder aufs neue auf die Probe stellt. :-(
chickenfigt1989 - Di 16.08.11 15:00
@Horschdware
Ich hab keine Kommentare gelöscht und wir haben gar nichts gestern in Icq besprochen.
Ich hab dich per pn gebeten mehr aber nicht
lg
Horschdware - Di 16.08.11 15:04
Entschuldigung, wie bitte?
Soll ich die Logs aus dem ICQ hier posten?
Der Quelltext der oben von dir gepostet wurde, stammt - bis auf ein paar Zeilen - von mir und war mit Kommentaren versehen marke "Hier wird die Ini angesprochen", "Hier werden die Resourcen wieder freigegeben", "Public Bereich des TForm1", etc.
Ich hoffe mal, du willst jetzt hier nicht im Ernst behaupten, ich hätte mir den gestrigen Abend nur ausgedacht. :!:
chickenfigt1989 - Di 16.08.11 15:06
Ich will hier keinen Beschuldigen ect.
jedoch lass ich mir nicht unterstellen ich sei Dumm und so.
Ich habe seit gut 6 Monaten kein Icq Account mehr.
lg
Horschdware - Di 16.08.11 15:10
Du hast mich hier im Forum per PN gebeten, dass wir uns im ICQ treffen, hast mir deine ICQ Nummer gegeben.
| Zitat: |
Von: chickenfigt1989
Verfasst: Mo 15.08.11 17:36
Titel: Re: Mal eine Frage Zitat
Hab dich eh schonmal geaddet musst mich nur noch hinzufügen.
396547XXX
lg
|
Meine Freundin saß gestern Abend neben mir und hat sich darüber lustig gemacht, was wir da treiben.
Ich sehe sogar in oben gepostetem Code die Stellen, an denen meine Kommentare waren - da ist jetzt viel leerer Raum entstanden.
Ich lasse mich doch hier nicht von dir veralbern!
edit: sogar die verhackte Einrückung von gestern Abend ist so geblieben!
chickenfigt1989 - Di 16.08.11 15:12
Ja wie bereits gesagt hab ich schon lange kein ICQ mehr.
Naja kann auch irgendnen text schreiben und behaupten denn hast du mir per pn geschrieben
Horschdware - Di 16.08.11 15:14
Ok, ich denke hier reicht das langsam. Das hat jetzt langsam Kindergarten Niveau erreicht.
Ich melde dich jetzt bei einem Moderator und bitte im gleichen Zug darum, diesen Thread zu schliessen.
chickenfigt1989 - Di 16.08.11 15:28
Ja meld mich weist du ich lass mir nichts unterstellen.
Nur weil du meinst das sei dein code.
Nein das ist mein Code denn ich per Copy & Paste zuammengeschustert hab
Horschdware - Di 16.08.11 15:34
chickenfigt1989 hat folgendes geschrieben : |
Nein das ist mein Code denn ich per Copy & Paste zuammengeschustert hab |
Das ist doch glatt gelogen. Die Konstruktion oben mit try..finally kennst du doch selbst gar nicht. Sieht man ja an dem zweiten Mal als du auf ne Ini zugreifen willst.
Darüber hinaus: Du hast mir heute Nacht noch deinen aktuellen Stand per PN zugeschickt. Da sind sogar noch Kommentare von mir UND dir drin!
Siehe:
Von: chickenfigt1989
Verfasst: Di 16.08.11 00:03
Titel: Re: Mal eine Frage
chickenfigt1989 hat folgendes geschrieben: |
So sieht es jetzt aus:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IniFiles, ExtCtrls, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Label1: TLabel; Timer1: TTimer; procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormActivate(Sender: TObject); private Zielzeit: TDateTime; public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var ini: TIniFile; filename: String; begin filename := ExtractFilePath(ParamStr(0)) + 'einstellungen.ini'; ini := TIniFile.Create(filename);
Zielzeit := now + 1; try ini.WriteDateTime('Daten','Zielzeit',Zielzeit); finally ini.Free; end;
Timer1.Enabled:=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject); begin Label1.Caption:= TimeToStr(zielzeit - now);
if now >= Zielzeit then begin Showmessage('Klappt'); Timer1.enabled:=false; end;
end;
procedure TForm1.FormActivate(Sender: TObject); var ini: TIniFile; filename: String; begin filename := ExtractFilePath(ParamStr(0)) + 'einstellungen.ini'; ini := TIniFile.Create(filename);
StrtoDateTime(ini.ReadString('Daten','Zielzeit','')); end;
end. |
Allerdings wenn ich das Programm starte wird die restzeit nicht in label angezeigt.
...
|
Ich lasse mich genauso wenig als Lügner darstellen. Glaub mir das!
Ich kann nur - im Gegensatz zu dir - meine Version belegen.
Normalerweise wäre so etwas wie eine Entschuldigung von deiner Seite aus her angebracht. Aber du reitest dich gerade nur noch mehr rein. Traurig, wirklich!
Tintenblut - Di 16.08.11 15:42
chickenfigt1989 hat folgendes geschrieben : |
| Nein das ist mein Code denn ich per Copy & Paste zuammengeschustert hab |
@
Horschdware Er hat doch ausdrücklich gesagt, dass er sich den Code per Copy & Paste zusammengeschustert hat.
Wahrscheinlich den gesamten Quellcode? Und die Kommentare musste er rausnehmen, weil das sonst aufgeflogen wäre -> zu wenig Rechtschreibfehler
chickenfigt1989 - Di 16.08.11 15:43
Tintenblut geh stinken
Horschdware
Aha ja kann auch irgendwas schrieben und sagen ähm hast du mir per pn gesschriebn
ZeitGeist87 - Di 16.08.11 15:45
Zeile 81 schickst du ins Nirwana..
Tipp: :=
chickenfigt1989 - Di 16.08.11 15:47
wenn ich nun Zielzeit:= mach hört der Timer aber nicht mehr auf.
lg
Martok - Di 16.08.11 15:52
Wie von mehreren angefragt, ist hier Feierabend.
Vom TE ist keinerlei Eigeninitiative erkennbar, der Umgangston ist unter aller Kanone, und die aktuellen Aktionen in der SB sprechen ja wohl für sich.
Wir werden das im Team prüfen und angemessene Maßnahmen ergreifen.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!