Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Brauche Hilfe zur Abfrage (https://www.delphipraxis.net/147258-brauche-hilfe-zur-abfrage.html)

morpheus090682 4. Feb 2010 15:12


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???

DeddyH 4. Feb 2010 15:13

Re: Brauche Hilfe zur Abfrage
 
Nimm doch einfach einen Timer.

morpheus090682 4. Feb 2010 15:14

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???

tkone 4. Feb 2010 15:17

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 .....

DeddyH 4. Feb 2010 15:17

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.

morpheus090682 4. Feb 2010 15:22

Re: Brauche Hilfe zur Abfrage
 
Ok mit den Antworten kann ich schon mal was anfangen wenn es
nicht klappt werde ich mich wieder melden

morpheus090682 4. Feb 2010 19:01

Re: Brauche Hilfe zur Abfrage
 
Zitat:

Zitat von tkone
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 .....

wie kann ich denn eine prozedur daraus machen?

Luckie 4. Feb 2010 19:29

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.

morpheus090682 4. Feb 2010 19:38

Re: Brauche Hilfe zur Abfrage
 
Hm also

Delphi-Quellcode:
procedure TForm1.Messung;
begin

// hir dann das was bei ButtonClick drin ist

end;
so habe ich das verstanden ist das richtig?
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]

morpheus090682 7. Feb 2010 19:47

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???

mkinzler 7. Feb 2010 19:49

Re: Brauche Hilfe zur Abfrage
 
Man kann das einfach selber machen (TextFile, Stringliste, ...)

morpheus090682 7. Feb 2010 19:55

Re: Brauche Hilfe zur Abfrage
 
Ich habe noch nicht so viel ahnung von delphi hast du da ein beispiel???

Blackheart 7. Feb 2010 20:00

Re: Brauche Hilfe zur Abfrage
 
Oder in einer Ini Datei Tutorial

mkinzler 7. Feb 2010 20:02

Re: Brauche Hilfe zur Abfrage
 
Textfile:
Delphi-Quellcode:
var
  tf: TextFile;
...
  AssignFile( tf, Dateiname);
  Rewrite( tf);
  Writeln( tf, Wert);
  ...
  CloseFile( tf);
Stringliste:
Delphi-Quellcode:
var
  sl: TStrings;
...
  sl := TStringList.Create;
  sl.add( wert);
  ..
  sl.SaveToFile( Dateiname);
  sl.Free;

morpheus090682 7. Feb 2010 20:12

Re: Brauche Hilfe zur Abfrage
 
Zitat:

Zitat von mkinzler
Textfile:
Delphi-Quellcode:
var
  tf: TextFile;
...
  AssignFile( tf, Dateiname);
  Rewrite( tf);
  Writeln( tf, Wert);
  ...
  CloseFile( tf);
Stringliste:
Delphi-Quellcode:
var
  sl: TStrings;
...
  sl := TStringList.Create;
  sl.add( wert);
  ..
  sl.SaveToFile( Dateiname);
  sl.Free;


Kannst du da noch ein paar kommentare einfügen damit mir es leichter fällt es zu verstehen???

mkinzler 7. Feb 2010 20:20

Re: Brauche Hilfe zur Abfrage
 
Was verstehst du nicht?

morpheus090682 7. Feb 2010 20:24

Re: Brauche Hilfe zur Abfrage
 
Zitat:

Zitat von mkinzler
Textfile:
Delphi-Quellcode:
var
  tf: TextFile;
...
  AssignFile( tf, Dateiname); //was ist tf???
  Rewrite( tf);
  Writeln( tf, Wert);
  ...
  CloseFile( tf);
Stringliste:
Delphi-Quellcode:
var
  sl: TStrings;
...
  sl := TStringList.Create;
  sl.add( wert);
  ..
  sl.SaveToFile( Dateiname);
  sl.Free;

wo kommt das hin??? Wird das Global gesetzt oder nach dem ich den wert bekommen habe???

mkinzler 7. Feb 2010 20:29

Re: Brauche Hilfe zur Abfrage
 
Zitat:

//was ist tf???
Zitat:

Delphi-Quellcode:
tf: TextFile;

Zitat:

wo kommt das hin??? Wird das Global gesetzt oder nach dem ich den wert bekommen habe???
Kommt darauf an, wieviele Werte geschrieben werden sollen und wann.

morpheus090682 7. Feb 2010 20:31

Re: Brauche Hilfe zur Abfrage
 
Zitat:

Zitat von mkinzler
Zitat:

//was ist tf???
Zitat:

Delphi-Quellcode:
tf: TextFile;

Zitat:

wo kommt das hin??? Wird das Global gesetzt oder nach dem ich den wert bekommen habe???
Kommt darauf an, wieviele Werte geschrieben werden sollen und wann.

Die Werte werden alle 30Sek. gemessen und sollen dann gespeichert werden!

morpheus090682 8. Feb 2010 15:44

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???

p80286 8. Feb 2010 15:57

Re: Brauche Hilfe zur Abfrage
 
Delphi-Quellcode:
Wert:=Wert+timetostr(now);
writeln(tf,wert);
Gruß
K-H

morpheus090682 8. Feb 2010 16:17

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

mkinzler 8. Feb 2010 16:20

Re: Brauche Hilfe zur Abfrage
 
Delphi-Quellcode:
Wert:=Wert+' ' +timetostr(now);

patti 8. Feb 2010 16:24

Re: Brauche Hilfe zur Abfrage
 
Zitat:

Zitat von morpheus090682
Besser wär noch da ich das in einer excel tabele speichere eine neue spalte

Du köntest dir überlegen, die Daten im CSV-Format ("Comma Separated Values") zu speichern. Dabei werden die einzelnen Daten beispielsweise mit Hilfe eines Strichpunkts (";") voneinander abgegrenzt. Excel kann dieses Datenformat nämlich importieren und richtig darstellen.

mfg

morpheus090682 8. Feb 2010 16:35

Re: Brauche Hilfe zur Abfrage
 
Zitat:

Zitat von patti
Zitat:

Zitat von morpheus090682
Besser wär noch da ich das in einer excel tabele speichere eine neue spalte

Du köntest dir überlegen, die Daten im CSV-Format ("Comma Separated Values") zu speichern. Dabei werden die einzelnen Daten beispielsweise mit Hilfe eines Strichpunkts (";") voneinander abgegrenzt. Excel kann dieses Datenformat nämlich importieren und richtig darstellen.

mfg

Und wie macht man das???

p80286 8. Feb 2010 17:57

Re: Brauche Hilfe zur Abfrage
 
Delphi-Quellcode:
Wert:='"'+Wert+'";"'+timetostr(now)+'"';
Die " sind darin um auch jede Verwechslung auszuschließen.

Gruß
K-H

morpheus090682 8. Feb 2010 21:02

Re: Brauche Hilfe zur Abfrage
 
Danke euch allen es klappt alles wunderbar. Nun kann meine Langzeit Temperaturmessung los gehen.

morpheus090682 9. Feb 2010 20:50

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 klick

So nun zu meiner frage wie lese ich das mit der unit ein und gebe das dann als Graph aus???

mkinzler 9. Feb 2010 20:58

Re: Brauche Hilfe zur Abfrage
 
Mark liefert doch direkt ein Beispiel für die Verwendung. :gruebel:
Was verstehst du den nicht?

morpheus090682 9. Feb 2010 21:03

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?

mkinzler 9. Feb 2010 21:07

Re: Brauche Hilfe zur Abfrage
 
Zitat:

Zitat von morpheus090682
Die datei binde ich von ihm ein so habe ich das verstanden aber wie greife ich dann
darauf zu?

Auch das ist im Thread beschrieben
[/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

morpheus090682 9. Feb 2010 21:09

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""

Delphi-Narr 10. Feb 2010 12:51

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:
PaintBox1.Canvas.Befehl
aufrufen.

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:
begin

with PaintBox1.Canvas do
begin
     
     MoveTo(1*10,(100-20));
     LineTo(2*10,(100-30));
end;

end;
Liebe Grüße!

Ich häng mal ein Beispiel an, ist mit einer Schleife...

morpheus090682 10. Feb 2010 15:05

Re: Brauche Hilfe zur Abfrage
 
Zitat:

Zitat von Delphi-Narr
Du fügst auf deiner Form eine PaintBox ein (Unter System glaub ich) und dann kannst du die Zeichenbefehle über

Delphi-Quellcode:
PaintBox1.Canvas.Befehl
aufrufen.

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:
begin

with PaintBox1.Canvas do
begin
     
     MoveTo(1*10,(100-20));
     LineTo(2*10,(100-30));
end;

end;
Liebe Grüße!

Ich häng mal ein Beispiel an, ist mit einer Schleife...


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

markus5766h 10. Feb 2010 15:11

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:
 Trunc(StrToFloat(dein geladener Wert als String))
ergibt einen Integer-Wert durch Abschneiden der Nachkommastellen
aus einem String (der einen Fließkommawert darstellt)

Delphi-Quellcode:
 Round(StrToFloat(dein geladener Wert als String))
ergibt einen Integer-Wert durch Runden
aus einem String (der einen Fließkommawert darstellt)

Blackheart 10. Feb 2010 15:14

Re: Brauche Hilfe zur Abfrage
 
Vieleicht solltest du dir auch erstmal dies anschauen Klick mich

morpheus090682 10. Feb 2010 15:33

Re: Brauche Hilfe zur Abfrage
 
Ich möchte aber gerne die Komma mit nehmen.

morpheus090682 10. Feb 2010 16:14

Re: Brauche Hilfe zur Abfrage
 
Delphi-Quellcode:
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.
So sieht das zur Zeit aus aber wenn ich die Kurve Zeichnen möchte sagt er halt den Fehler.
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

Blackheart 10. Feb 2010 16:30

Re: Brauche Hilfe zur Abfrage
 
Pushen erst nach 24 Stunden erlaubt
Trunc
Round
Data Types
und Crashkurs anschauen. :wink:

Blup 10. Feb 2010 16:49

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 11:31 Uhr.
Seite 1 von 2  1 2      

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