Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5

Arrays in Delphi
#1

Jippi noch ein Thread. Big Grin 
Muss über Arrays in Delphi mein Fachreferat halten und würde mich freuen, wenn mir jemand bezüglich Arrays in Delphi helfen könnte.
Zitieren
#2

Ich kenn mich mit Delphi jetzt nicht so sehr aus, behaupte aber mal, dass das Konzept von Arrays Programmiersprachenübergreifend so gut wie identisch ist.

Was willst du denn wissen?
Zitieren
#3

Beholder,index.php?page=Thread&postID=53431#post53431 schrieb:Ich kenn mich mit Delphi jetzt nicht so sehr aus, behaupte aber mal, dass das Konzept von Arrays Programmiersprachenübergreifend so gut wie identisch ist.

Das Prinzip ja, hab ich zumindest bisher durch's Netz mitbekommen, der Code ist logischerweise immer etwas anders, aber momentan geht's bei mir eigentlich bloß um Informationssammeln.
Irgendwie kann ich mir nicht vorstellen für was Arrays gut sind. Gibt es da irgendwelche Beispiele im Internet?
Ich soll was über 2-dimensionale Arrays machen, also z.B. Tabellen, aber warum brauch ich dafür ein Array, ginge ne Tabelle nicht auch anders?
Zitieren
#4

Naja, ein Array ist ja im Prinzip eine Tabelle. Und zwar eine, in der der Daten vom gleichen Typ stehen. Also z.B. alle Vornamen und alle Nachnamen einer Personengruppe.
Wenn du Arrays vermeiden willst, kannst du entweder alles zu Fuß machen, also Tausende Variablennamen ala $name1, $name2, name3 usw. einführen, oder gleich ein Array nehmen, in das alles auf einmal reingeht. Außerdem kann man Arrays sortieren, Funktionen auf alle Elemente auf einmal loslassen, Elemente austauschen, löschen, einfügen usw.

Eine vernünftige Alternative zu Arrays KÖNNEN Datenbanken sein, also z.B. MySQL oder ähnliches. In den meisten Fällen wäre das aber OVerkill, weil es einen Datenbankserver und die Einrichtung einer Datenbank erfordert. Das lohnt sich nur bei großen Projekten wie z.B. einem Forum.

Auf der Arbeit werden unsere Messkurven übrigens immer als Array verarbeitet. Und zwar wird jedem Meßpunkt (Sample) eine gemessene Spannung zugeordnet. Das kann man dann wunderbar einfach normieren, filtern, speichern usw.
Zitieren
#5

Danke für deine ausführliche Erklärung. Smile  Jetzt versteh ich gleich ein bisschen mehr.

Beholder,index.php?page=Thread&postID=53439#post53439 schrieb:Auf der Arbeit werden unsere Messkurven übrigens immer als Array verarbeitet. Und zwar wird jedem Meßpunkt (Sample) eine gemessene Spannung zugeordnet. Das kann man dann wunderbar einfach normieren, filtern, speichern usw.
Könntest du mir vll darüber genauer etwas erzählen, weil so ein Sache sehr praktisch für Demonstrationszwecke wäre, ich muss das ja vor meinen Mitschülern erklären und die sollen sich unter dem Sinn und Zweck von Arrays auch was vorstellen können. Von daher wäre so eine Messkurve bzw. Meßtabelle ideal.
Ich mein jetzt nicht, dass du mir erklären sollst, was da alles gemessen wird, sondern wie das programmiertechnisch so grob geht mit speichern usw.

Arrays sind ja auch nicht gerade der objektorientierterste Bereich im Programmieren, das läuft ja mehr oder weniger alles im Hintergrund, könnte man es zur besseren Vorstellung auch so machen, dass man sich im Programm sozusagen richtig ne Meßtabelle zeichen lässt mit den Werten.
Oder sowas muss man ja sowieso haben, weil bei den Messungen muss man ja was eingeben können, oder, sonst kann das Programm ja nix zeichnen?
Ihr macht das in der Arbeit ja wahrscheinlich auch so, Messungen eintragen und dann das ganze speichern, wird dann als Array gespeichert und später könnt ihr es wieder aufrufen, oder?
Zitieren
#6

Ich hab dir mal eine Beispielmessung angehängt. In der Zip-Datei findest du eine einfache Textdatei in der 4 Messkanäle gespeichert sind. 2 davon sind glaube ich nur Rauschen, zwei enthalten die Signale, die in diesem Bild zu sehen sind:
.jpg Interferenzsignal.jpg Größe: 45,82 KB  Downloads: 0


Das Grüne ist ein Laserpuls im zeitlichen Verlauf, das Rote ist ein Interferenzsignal, welches die Bewegung und Lebensdauer der von dem Laser erzeugten Blasen zeigt. Ist aber im Detail auch egal, hier gehts ja um Arrays ;-)

Jede Kurve, also jedes Signal wird als Array gespeichert. Das kann ich dann per einfachem Aufruf in eine Textdatei speichern und z.B. in Excel oder besseren Programmen verarbeiten, um daraus eine Kurvendarstellung zu erzeugen.
Oder ich erzeuge direkt im Messprogramm die entsprechenden Plots, und lasse sie mir live anzeigen. Das obige Bild ist so eine Liveanzeige.
Arrays ermöglichen es, schnell und einfach diverse Operationen auf diese loszulassen. Ich könnte die Kurven filtern, normieren, addieren, usw. In einem Array befinden sich durchaus mal Millionen von Messpunkten. Wenn ich für jeden Messpunkt eine eigene Variable definieren würde, würde ich nie fertig werden.

Wir arbeiten aber nicht mit Delphi. Sowas benutzen nur Lehrer ;-)


Angehängte Dateien
.zip Messung.zip Größe: 176,43 KB  Downloads: 1
Zitieren
#7

Beholder,index.php?page=Thread&postID=53482#post53482 schrieb:Wir arbeiten aber nicht mit Delphi. Sowas benutzen nur Lehrer ;-)

Mir hat mal einer gesagt, der im Bereich SAP (Steuerungsautomatik) arbeitet und auch programmiert, dass sie Delphi früher nicht benutzt haben, weil der Compiler im Gegensatz zu C++ zu lahm war, aber jetzt mittlerweile bei ihnen schon eingesetzt wird.
Naja, ich hab mir ja selbst ein bisschen mit Visual Basic programmieren beigebracht, das ist definitiv noch einige Stufen einfacher wie Delphi. Big Grin 
Ich hab bei Delphi am Anfang nicht mal verstanden, warum ich StrToFloat/Int(Textfeld) oder Float/IntToStr(Zahl) schreiben muss, bei VB ging das einfach immer Abs() für reele Zahlen und Int() für ganze Zahlen.
Genauso wie mit den IF-Schleifen, bei Delphi braucht man bei mehr als einer Folge nach dem IF ein begin und am Ende ein end; oder end und dann noch ein else. Bei VB:
IF....Then
.....
.....
(Else
.....
.....)
End If

Naja, ist ja jetzt egal, auf jeden Fall danke für dein Erklärung. Smile 
Aber dass ich dich richtig verstehe, also ich stelle mir das jetzt so vor, ich habe jetzt z.B. eine Gleichung
x³+2x²-1=0 (nur ganz einfach jetzt als Beispiel mal) und ich will diese vom Programm zeichnen lassen ohne Arrays würde ich dem Anwender jetzt sagen wir mal 5 Textfelder zum Eingeben verschiedener x-Werte geben, das Programm würde die dazugehörigen y-Werte ausrechnen und dann damit den Graphen zeichnen. Problem: Durch die Angabe von 5 Messwerten kann man einen Graphen jetzt nicht wirklich genau darstellen, also könnte ich dem Anwender sozusagen 1000 Textfelder geben, dann könnnte ich es genauer darstellen lassen, das Problem ist nur, dass 1000 Textfelder zu verarbeiten ne ziemlich aufwendige Sache für mich als Programmierin ist und das Programm unter Umständen mehr Speicher belegt, als es müsste, z.B. wenn der Anwender "bloß" 200 Werte eingibt. Richtg soweit?
Das ganze ginge jetzt viel eleganter durch ein Array, ich programmiere es dann so, dass mir der Anwender zunächst mitteilen muss wieviele Messwerte er eingeben will, den Anfangswert, die Schrittweite und dann Endwert und anhand dieser Daten kann man dann mithilfe eines Arrays, wenn es richtig programmiert ist x-beliebig viele Werte ausrechnen ohne, dass man sich als Programmierer zu Tode deklariert oder?
Zitieren
#8

Jo, das hast du richtig erkannt Thumbs up 
Zitieren
#9

Beholder,index.php?page=Thread&postID=53496#post53496 schrieb:Jo, das hast du richtig erkannt Thumbs up
Echt jetzt? Nachdenken 

Ginge das dann im Referat schon so, dass ich das anhand einer Messreihe mache, ich mein, ist die Problematik verständlich schon eigentlich, oder?
Also ich würde es erst mit der gewöhnlichen Variante programmieren (Textfelder und so) und den Leuten dann so zeigen, dass das so nicht so richtig gut geht und dann zeig ich die Variante mit den Arrays.
Zitieren
#10

Ja, so in der Richtung. Wenn du es konkreter hast, kannst du es hier ja reinstellen, dann schau ich nochmal drüber, wenn du möchtest.
Zitieren


Möglicherweise verwandte Themen…
Thema / Verfasser Antworten Ansichten Letzter Beitrag
Letzter Beitrag von l.m.
06.05.2011 10:34

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste