Autor |
Beitrag |
Andreas.Knof
Hält's aus hier
Beiträge: 12
|
Verfasst: Mi 25.04.07 09:22
Hallo Leute,
wie kann man ein Tchart in in array umwandeln, wenn man nicht weiß, wie viele Diagrammpunkte im Tchart enthalten sind?
Ich mache eine Messwerterfassung und weiß am Ende eben nicht, wie viele Messwerte es genau sind und möchte jeden Einzelwert in ein arrayfeld übergeben, weil ich mit den Messwerten noch rechnen möchte.
habe folgenden probiert:
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure Button1Click... var t: integer Messwerte:=Array[0..1000] of integer; index : integer;
begin for i=0 to Series1.Count-1 do begin Messwerte[index]:= Series1.YValue[index] inc(index); if index:=1000 then index:=0; end; |
Problem:
1.) Ihn stört das Series1.YValue[index]; mit Series1.YValues.Value[index] gehts auch nicht
2.) ihn stärt irgendetwas am "index"
3.) hier ist mein array 1000 Felder groß. Der Befehl Messwerte:=array[0..t] nimmt er nicht
Ich kann nicht sagen, was an diesen "4 Zeiler" falsch sein sollte.
Könnt ihr mir bitte einen Tipp geben!
Danke im Voraus.
Andreas
Moderiert von raziel: Delphi-Tags hinzugefügt
|
|
Miri
      
Beiträge: 657
Delphi 3 Prof., Delphi 2005 PE
|
Verfasst: Mi 25.04.07 09:38
Hi,
erstmal ist es deutlich einfacher, dein Posting zu lesen, wenn du die Delphi-Tags <span class="inlineSyntax"></span> verwendest!
Andreas.Knof hat folgendes geschrieben: |
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| procedure Button1Click... var t: integer Messwerte:=Array[0..1000] of integer; index : integer;
begin for i=0 to Series1.Count-1 do begin Messwerte[index]:= Series1.YValue[index] inc(index); if index:=1000 then index:=0; end; |
|
Wozu benutzt du index, wenn deine Schleife i durchläuft?
Du hast i nicht deklariert. Versuch mal statt des index : integer; einfach i : integer; zu verwenden und innerhalb der schleife dann auch i zu verwenden. das inc() ist dann auch nicht mehr nötig, das erledigt dann die schleife für dich.
Hoffe, damit kommst du weiter.
Gruß,
Miri
_________________ Anonymes Eckenkind
|
|
Andreas.Knof 
Hält's aus hier
Beiträge: 12
|
Verfasst: Mi 25.04.07 10:58
Tag,
war ein Schreibfehler von mir das mit i und index. Ihn stört aber die Zeile:
Messwerte[i]:= Series1.YValue[i]
Wie lasse ich den den Quelltext in bekannte Delphi Form im Posting erscheinen: einfach vor den Text bringen?
Gruß
Andreas
|
|
Miri
      
Beiträge: 657
Delphi 3 Prof., Delphi 2005 PE
|
Verfasst: Mi 25.04.07 11:08
Miri hat folgendes geschrieben: |
erstmal ist es deutlich einfacher, dein Posting zu lesen, wenn du die Delphi-Tags <span class="inlineSyntax"></span> verwendest! |
Einfach vor deinem Code <span class="inlineSyntax"> und dahinter</span> schreiben.
So, und nun verrate uns doch mal genau, was für ein Fehler kommt...
Unter Umständen reicht es, wenn du hinter die Zeile, die du nanntest, ein ; setzt. Oder ist das auch beim Abtippen abhanden gekommen, so wie das mit dem index und dem i? -> Bei sowas ist es hilfreicher, Copy & Paste zu verwenden, damit sich soetwas nicht einschleicht.
Aber wie gesagt, ohne genaue Fehlerbeschreibung kann man nur raten.
Das mit dem array[0..t] nicht funktioniert, liegt daran, dass man mit den eckigen Klammern ein statisches Array definiert. Wie der Name "Statisch" schon sagt, kann man da nicht viel mit (dynamischen) Variablen anfangen.
Es gibt aber auch dynamische Arrays, dabei hilft dir die Suchfunktion! 
_________________ Anonymes Eckenkind
|
|
Andreas.Knof 
Hält's aus hier
Beiträge: 12
|
Verfasst: Mi 25.04.07 12:30
Tag,
der "Internetrechner" ist leider nicht der "Delphirechner". Ich werde Dir morgen mal den kopierten Quelltext, einschließlich der Fehlermeldung, zeigen. Falls ich es heute nicht hinbekomme. Am ; liegt es allerdings nicht. Wäre zu schön gewesen. Obwohl solche Leichtsinnsfehler wie ; oder ähnliche ja auch schon zu oft vorgekommen sind.
Danke und bis morgen denn, wenn du kannst.
Gruß
Andreas
|
|
Andreas.Knof 
Hält's aus hier
Beiträge: 12
|
Verfasst: Do 26.04.07 10:00
Tag zusammen,
habs hinbekommen. Der Fehler von Delphi war "nicht genügend wirkliche Parameter".
Ich hatte vergessen, Tpyumwandlungen flottostr us.w vor der Wertzuweisung vorzunehmen.
Viele Grüße
Andreas
|
|
Platon
      
Beiträge: 42
WinXP, Windows 7
Delphi 5 Enterprise, Delphi 2005 Architect, Delphi 2007 Prof., Delphi 2010 Prof., Delphi XE2 Prof., Visual C++ 6.0, LabView 7.1, SPS
|
Verfasst: Do 26.04.07 10:01
Hoi,
warum verwendest du Arrays ? Ich hab auch mit den TChart gearbeitet und ich habe auch Messwerte in dem TChart....nach der Auswahl des Berecihes im TChart des Anwenders, packe ich die visible Punkte in eine Liste...
Hab ein Objekt geschrieben und dann eine Liste ringsrum gepackt...
Die Liste kannst du nun beliebig erweitern und auch das rausholen der Punkte ist ja auch nur eine for-Schleife.
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:
| ...
interface
uses Classes, Contnrs;
type TPoint = class(TPersistent) public XValue : double; YValue : double; end;
type TPointList = class(TObjectList) protected function GetPoint(Index: integer): TPoint; public constructor create; property Items[Index: integer]: TPoint read GetPoint; end;
...
implementation
constructor TPointList.create; begin inherited create; end;
function TPointList.GetPoint(Index: integer): TPoint; begin result := TPoint(inherited Items[Index]); end; |
|
|
Andreas.Knof 
Hält's aus hier
Beiträge: 12
|
Verfasst: Do 26.04.07 15:14
Hi,
das Array soll nur zum Zwischenbunkern der Werte dienen. Anschließend will ich dann ein paar Rechnungen dran vornehmen (Statistik, Filterung usw, Extrema-Analyse).
Zum Speichern der Diagrammpunkte in einer Datei - zum späteren Anschauen in Excel o.ä. - habe ich bereits eine Prozedure.
Erst wollte ich mit Tlist arbeiten, schien mir dann aber zu kompliziert.
Deine Variante kenn ich noch nicht. Gibts da Unterschiede zw. unseren beiden Varianten? Vorteil Deiner wäre, dass nicht vorher der maximale Wertebedarf festgelegt werden braucht. Aber damit kann ich leben.
Interessant wäre, wie man die X Achse "laufen" lassen kann. Denn ich hab ca. 1000 Messwerte, die dann auf 10cm*10cm Diagrammfläche arg gequetscht werden. Schön wäre, wenn er nur die letzten 20 anzeigen würde, aber OHNE die Vorhergehenden zu löschen!!! Hattest Du das selbe Problem?
Gruß
Andreas
|
|
|