![]() |
Brauche Hilfe zur Abfrage
Hi bin noch nicht so lange hir und brauche mal Hilfe!
Ich habe ein Programm das wenn ich auf den Button (Temperaturabfrage) klicke mir die Temperatur anzeigt! Nun möchte ich aber das, dass Programm nun alle 30 Sek. selber die Temperatur einließt wie kann ich das realisieren??? |
Re: Brauche Hilfe zur Abfrage
Nimm doch einfach einen Timer.
|
Re: Brauche Hilfe zur Abfrage
Ja am Timer habe ich auch schon gedacht aber wie arbeite ich damit und wie stellt man die Zeit ein???
|
Re: Brauche Hilfe zur Abfrage
also ich geb mal nen tip ;)
mach aus deinem button click ereignis eine prozedur. und anschließend rufst du diese prozedur auf, gefolgt von einem timer (z.B. sleep(100)) anschließend wieder die prozedur ..... |
Re: Brauche Hilfe zur Abfrage
Ein Timer wird zyklisch ausgeführt. Die Zeitspanne zwischen 2 Zyklen stellt man über die Interval-Eigenschaft ein. In Deinem Fall wären das also 30000.
|
Re: Brauche Hilfe zur Abfrage
Ok mit den Antworten kann ich schon mal was anfangen wenn es
nicht klappt werde ich mich wieder melden |
Re: Brauche Hilfe zur Abfrage
Zitat:
|
Re: Brauche Hilfe zur Abfrage
In dem du den Code nimmst und in eine separate Prozedur bzw. wohl besser in eine separate Methode deiner Formklasse kopierst.
|
Re: Brauche Hilfe zur Abfrage
Hm also
Delphi-Quellcode:
so habe ich das verstanden ist das richtig?
procedure TForm1.Messung;
begin // hir dann das was bei ButtonClick drin ist end; Und wie baue ich den Timer ein damit er es immer wieder durchführt??? [edit=mkinzler]Color-Tag durch Delphi-Tag ersetzt: as gefällt euch eigentlich am Code-Highlightimg nicht, weil ihr immer andere Markierungen verwendet? Mfg, mkinzler[/edit] |
Re: Brauche Hilfe zur Abfrage
So habe es nun hin bekommen das ich alle 30sek. einen Wert bekomme.
Aber nun habe ich eine weitere Frage und zwar jetzt bekomme ich die werte ja kann ich die nun auch automatisch speichern lassen in einer txt oder so??? |
Re: Brauche Hilfe zur Abfrage
Man kann das einfach selber machen (TextFile, Stringliste, ...)
|
Re: Brauche Hilfe zur Abfrage
Ich habe noch nicht so viel ahnung von delphi hast du da ein beispiel???
|
Re: Brauche Hilfe zur Abfrage
Oder in einer Ini Datei
![]() |
Re: Brauche Hilfe zur Abfrage
Textfile:
Delphi-Quellcode:
Stringliste:
var
tf: TextFile; ... AssignFile( tf, Dateiname); Rewrite( tf); Writeln( tf, Wert); ... CloseFile( tf);
Delphi-Quellcode:
var
sl: TStrings; ... sl := TStringList.Create; sl.add( wert); .. sl.SaveToFile( Dateiname); sl.Free; |
Re: Brauche Hilfe zur Abfrage
Zitat:
Kannst du da noch ein paar kommentare einfügen damit mir es leichter fällt es zu verstehen??? |
Re: Brauche Hilfe zur Abfrage
Was verstehst du nicht?
|
Re: Brauche Hilfe zur Abfrage
Zitat:
|
Re: Brauche Hilfe zur Abfrage
Zitat:
Zitat:
Zitat:
|
Re: Brauche Hilfe zur Abfrage
Zitat:
|
Re: Brauche Hilfe zur Abfrage
Delphi-Quellcode:
var
tf: TextFile; ... AssignFile( tf, Dateiname); //was ist tf??? append( tf); Writeln( tf, Wert); ... CloseFile( tf); So hat das nun geklappt. Kann man nun dazu auch die system zeit speichern??? |
Re: Brauche Hilfe zur Abfrage
Delphi-Quellcode:
Gruß
Wert:=Wert+timetostr(now);
writeln(tf,wert); K-H |
Re: Brauche Hilfe zur Abfrage
Das klappt super. Danke!
Nur eins noch nun schreibt er alles direkt hintereinander kann man da auch noch ein leerzeichen rein machen? Besser wär noch da ich das in einer excel tabele speichere eine neue spalte |
Re: Brauche Hilfe zur Abfrage
Delphi-Quellcode:
Wert:=Wert+' ' +timetostr(now);
|
Re: Brauche Hilfe zur Abfrage
Zitat:
mfg |
Re: Brauche Hilfe zur Abfrage
Zitat:
|
Re: Brauche Hilfe zur Abfrage
Delphi-Quellcode:
Die " sind darin um auch jede Verwechslung auszuschließen.
Wert:='"'+Wert+'";"'+timetostr(now)+'"';
Gruß K-H |
Re: Brauche Hilfe zur Abfrage
Danke euch allen es klappt alles wunderbar. Nun kann meine Langzeit Temperaturmessung los gehen.
|
Re: Brauche Hilfe zur Abfrage
Hi ich mal wieder mir ist mal wieder zu viel duch den kopp gegangen
und zwar hatte ich die idee die csv-datei nun ein zu lesen und dann in dann in ein x/y Kordinatensystem an zu zeigen. Habe dies hir gefunden ![]() So nun zu meiner frage wie lese ich das mit der unit ein und gebe das dann als Graph aus??? |
Re: Brauche Hilfe zur Abfrage
Mark liefert doch direkt ein Beispiel für die Verwendung. :gruebel:
Was verstehst du den nicht? |
Re: Brauche Hilfe zur Abfrage
Die datei binde ich von ihm ein so habe ich das verstanden aber wie greife ich dann
darauf zu? Und wie mache ich aus den Werten ein Kordinatensystem? |
Re: Brauche Hilfe zur Abfrage
Zitat:
[/quote]Und wie mache ich aus den Werten ein Kordinatensystem?[/quote] Willst du aus den Werten ein Koordinatensystem machen oder diese in einem darstellen? Zeichnen könntest du auf einem Canvas z.B. einer Paintbox |
Re: Brauche Hilfe zur Abfrage
Oh sorry eins Zeichnen natürlich!!!
Wie geht das aber??? ""Zeichnen könntest du auf einem Canvas z.B. einer Paintbox"" |
Re: Brauche Hilfe zur Abfrage
Liste der Anhänge anzeigen (Anzahl: 1)
Du fügst auf deiner Form eine PaintBox ein (Unter System glaub ich) und dann kannst du die Zeichenbefehle über
Delphi-Quellcode:
aufrufen.
PaintBox1.Canvas.Befehl
Beispiel: 1. Temperatur: 20° 2. Temperatur: 30° Auf der PaintBox hast du ein Koordinatensystem, 0|0 ist oben links. Temperaturspanne von 0° - 100° (Beispiel).. Also, Höhe der Paintbox z.B. auf 100 setzen Da der Graph aber unten anfangen soll, musst du bedenken, dass der tiefste Punkt also 100 als y-Wert hat!
Delphi-Quellcode:
Liebe Grüße!
begin
with PaintBox1.Canvas do begin MoveTo(1*10,(100-20)); LineTo(2*10,(100-30)); end; end; Ich häng mal ein Beispiel an, ist mit einer Schleife... |
Re: Brauche Hilfe zur Abfrage
Zitat:
Es geht fast leider kommt wenn ich die werte reinladen möchte der fehler 16,5 ist kein integer wert wo muß ich was ändern habe schon versucht mit real aber dann bekomme ich eine andere fehlermeldung |
Re: Brauche Hilfe zur Abfrage
Hallo,
Du musst 16,5 zu einen Integer-Wert wandeln z.B. Trunc(16.5) --> ergibt 16 (den Vorkommateil) oder Round(16.5) --> ergibt 17 (gerundeter Wert) :zwinker: beim Laden :
Delphi-Quellcode:
ergibt einen Integer-Wert durch Abschneiden der Nachkommastellen
Trunc(StrToFloat(dein geladener Wert als String))
aus einem String (der einen Fließkommawert darstellt)
Delphi-Quellcode:
ergibt einen Integer-Wert durch Runden
Round(StrToFloat(dein geladener Wert als String))
aus einem String (der einen Fließkommawert darstellt) |
Re: Brauche Hilfe zur Abfrage
Vieleicht solltest du dir auch erstmal dies anschauen
![]() |
Re: Brauche Hilfe zur Abfrage
Ich möchte aber gerne die Komma mit nehmen.
|
Re: Brauche Hilfe zur Abfrage
Delphi-Quellcode:
So sieht das zur Zeit aus aber wenn ich die Kurve Zeichnen möchte sagt er halt den Fehler.
unit Kurve;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) PaintBox1: TPaintBox; ListBox1: TListBox; Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation uses csCSV; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); Var csvReader : TCSVReader; sData : TFileStream; i : integer; Begin sData := TFileStream.Create('H:\Werte.CSV',fmOpenRead); csvReader := TCSVReader.Create (sData, ';'); csvReader.First; // Nach Änderung auf Veranlassung von Grenzgaenger nun notwendig. Dank an 'deadcandance' Try While not csvReader.Eof Do Begin For i:=0 to csvReader.ColumnCount - 1 Do ListBox1.Items.Add (csvReader.Columns[i]); csvReader.Next; End; Finally csvReader.Free; sData.Free; End; End; procedure TForm1.Button2Click(Sender: TObject); var i:integer; begin for i:=0 to Listbox1.items.Count-1 do begin with Paintbox1.Canvas do begin if i=0 then MoveTo(((i+1)*30),(500-(StrToInt(ListBox1.Items.Strings[i])*5))); if i>0 then LineTo(((i+1)*30),(500-(StrToInt(ListBox1.Items.Strings[i])*5))); end; end; end; end. Was muß geändert werden damit ich auch die Komma werte benutzen kann. Oder wo müßte Truc hin und wie muss Truc als Befehl aussehen |
Re: Brauche Hilfe zur Abfrage
|
Re: Brauche Hilfe zur Abfrage
Wenn deine Werte in einem bestimmten Bereich z.B. 0,0 .. 99,0°C liegen und du diese auf Bildpunkte von 0..500 abbilden möchtest, müssen die Werte auf diesen Bereich erweitert werden.
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var Temperatur: Double; i, x, y: Integer; begin for i := 0 to Listbox1.Items.Count - 1 do begin x := (i + 1) * 30; Temperatur := StrToFloat(ListBox1.Items.Strings[i]); // Kommazahl y := 500 - Round(Temperatur * 5); // um den Faktor 5 zoomen, dann umwandeln in Ganzzahl with Paintbox1.Canvas do begin if i=0 then MoveTo(x, y) else LineTo(x, y); end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:36 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