![]() |
Re: Array timer, stringgrid hilft mir
ich verzweifel noch !!!
ich hab jetzt versucht die scheiße do zumchen un was geht gar nix holt das scheiß array un werft es in de tone ich versteh gar nix einfach der letzte scheiß is das array do tabelle un timmer han ich mir beigebracht aber array verisst es ich werd am beste moin nach der 4 stund krank dann muss ich die arbeit ent schirebn so :pale: sry my ausdrucksweise aber ich bin genervt von dem scheiße |
Re: Array timer, stringgrid hilft mir
Blöde Frage: Du weißt aber, was ein Array ist?
|
Re: Array timer, stringgrid hilft mir
em mehr oder weniger es soll angellcih zahlen oder so was speichern in einem bestimtm beieich den mann festelgt
aber ich bekomm das nicht angewnandrt =( |
Re: Array timer, stringgrid hilft mir
Vielleicht hilft dir das weiter:
![]() Ist ein Tutorial über Arrays und andere "Komplexe Datentypen". P@Tti |
Re: Array timer, stringgrid hilft mir
du sei mir bitte net böse aber damit komm ich ar nicht zurecht
kannst du mir das vlt in paar einfachen sätzen erklären`? wie das gehen soll?` |
Re: Array timer, stringgrid hilft mir
Dann sag ich mal ganz doof: ein Array ist eine "Kette" von Daten desselben Typs. Hier gibt es 2 Geschmacksrichtungen:
- dynamisches Array: keine festgelegte Größe, diese muss immer wieder neu definiert werden, wenn Elemente hinzugefügt oder gelöscht werden - statisches Array: festgelegte Größe, d.h. es ist von vornherein bekannt, wieviele Elemente enthalten sind In Deinem Fall würde ich ein statisches Array definieren (mit 60 Elementen). Nun hast Du das Problem, dass Du noch nicht weißt, ob alle Elemente bereits gemessen wurden. Also reicht IMHO ein elementarer Datentyp (z.B. double) hier nicht aus. Also ein Ansatz für die Definition eines Datentyps, der als Array-Element dienen soll:
Delphi-Quellcode:
Nun definierst Du das eigentliche Array.
type TElement = record
Messwert: double; //der eigentliche Messwert gemessen: Boolean; //wurde bereits gemessen? Ist von Belang, solange keine 60 Messwerte vorliegen end;
Delphi-Quellcode:
Zum Programmstart setzt Du alle Werte initial auf 0.
var MessArray: array[0..59] of TElement; //60 Elemente, beginnend bei 0
Delphi-Quellcode:
So, wenn der Timer feuert, machst Du Folgendes: Du kopierst (von hinten nach vorn) den Vorgängerwert auf den aktuellen Wert.
FillChar(MessArray, SizeOf(MessArray), 0);
Delphi-Quellcode:
Dadurch rutschen alle Messwerte "nach hinten", und Du kannst den neuen Wert als erstes Element (Index 0) eintragen (dabei das Setzen von "gemessen" nicht vergessen). Nun musst Du das Ganze nur noch in einer weiteren Schleife im StringGrid darstellen (und hierbei wieder auf "gemessen" achten ;)).
for i := High(MessArray) downto Low(MessArray) + 1 do
MessArray[i] := MessArray[i-1]; Ich hoffe, diese Hilfestellung reicht Dir aus. |
Re: Array timer, stringgrid hilft mir
[ROTER KASTEN - ICH POSTE TROTZDEM MAL]
So schwer ist das gar nicht: Zunächst definierst du ein Array:
Delphi-Quellcode:
Dieses Feld speichert jetzt 11 integer-Werte (also Zahlen). Diese einzelnen Zahlen sprichst du mit
MeinArray : array[0..10] of integer
Delphi-Quellcode:
bis
MeinArray[0]
Delphi-Quellcode:
an und kannst dadurch Zahlen-Werte setzen (da du ja ein Integer-Array hast).
MeinArray[10]
Beispiel:
Delphi-Quellcode:
Du besitzt also 11 (von 0 bis 10) integer-Werte, die im Grunde nichts anderes sind als wie wenn du folgendes definieren würdest:
MeinArray[0] := 115;
MeinArray[1] := 234;
Delphi-Quellcode:
Allerdings würde dies bei vielen Werten (60) sehr umständlich und unübersichtlich werden (für dein Vorhaben wäre das beinahe unmöglich)!
Zahl1 : integer;
Zahl2 : integer; Zahl3 : integer; //... Durch die Zahl, die in eckigen Klammern angegeben wird (z.B. [0]) greifst du auf die einzelnen Werte zu. Als kleine Hilfe noch zu deiner Aufgabe: Folgendes definierst du im private-Bereich deiner Form:
Delphi-Quellcode:
Und das brauchst du im Timer-Event:
i : integer;
Messwerte : array[0..60] of Double;
Delphi-Quellcode:
Der Code ist noch nicht ganz vollständig, sollte dir aber schonmal weiterhelfen. Bei Fragen einfach fragen ;-)
Messwerte[i] := random(1000)/100-25;
inc(i); if i > 60 then i := 0; Hoffe, ich konnte etwas helfen P@Tti |
Re: Array timer, stringgrid hilft mir
danke ihr 2 ich frage eh immer
aber wie kann ich amchen das der wie in emier aufgabe bestimmt immer etwas einem arry speicher tut? also ein zufallszahl? |
Re: Array timer, stringgrid hilft mir
Zitat:
|
Re: Array timer, stringgrid hilft mir
Ok, stimmt. Hab in der Schnelle nicht drangedacht ;-)
Müsste also korrekt heißen:
Delphi-Quellcode:
;-)
Messwerte : array[0..59] of Double;
@Feuerwehrmann90: Das Timer-Event in meinem Post vorher macht genau das: Es speichert in das Array den Wert, den random liefert. Random ist die Zufallsfunktion, die einen zufälligen Wert liefert. Damit diese funktioniert musst du z.B. im OnCreate des Forms
Delphi-Quellcode:
aufrufen.
randomize;
random(1000) liefert Werte von 0 - 1000. Dieser Wert wird dann durch 100 geteilt, es entstehen also Werte von 0 bis 10. Anschließend wird von dieser Zahl wiederum 25 abgezogen, dadurch entstehen Werte von -25 bis -15 (so wie in deiner Aufgabe verlangt). P@Tti |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:02 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