![]() |
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 02:28 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