Upload
votuong
View
214
Download
0
Embed Size (px)
Citation preview
5 Prototypische Implementierung zur Gerätesteuerung und
Auswertung von Analysedaten
Mit dem konzeptionellen Entwurf zur Gerätesteuerung und Auswertung von
Analysedaten ist die Grundlage zur Erstellung des Softwareproduktes „Uni-
Stat“ geschaffen. Vor der eigentlichen Implementierung stellt sich jedoch die
Frage, in welcher Programmiersprache das Programm entwickelt werden
soll. Neben den so genannten Rahmenbedingungen wie zum Beispiel Platt-
formunabhängigkeit, besonders gutes Laufzeitverhalten, kurze Entwick-
lungszeiten durch Nutzung von Design-Vorlagen, sind nicht zuletzt auch die
persönlichen Präferenzen des Entwicklers ausschlaggebend für die Wahl der
geeigneten Programmiersprache und damit auch die Wahl einer geeigneten
Programmierumgebung.
Nach den gestellten Anforderungen aus dem zweiten Kapitel soll die Softwa-
re unter dem Betriebssystem „Microsoft Windows 2000“ lauffähig sein. Un-
ter dieser Maßgabe und der bereits angesprochenen möglichen Präferenzen
des Entwicklers ist die Entscheidung bezüglich der Wahl der Programmier-
sprache auf Delphi 7 gefallen. Weitere Vor- und Nachteile von Delphi 7 sol-
len an dieser Stelle nicht näher betrachtet werden.
Die Bezeichnungen der im Fachkonzept entwickelten Modelle und Modellele-
mente wurden bereits so gewählt, dass daraus äquivalent Methoden und
Klassen ableitbar sind. Damit wird sichergestellt, dass zu jeder Zeit und auf
einfache Weise ein Bezug vom Quelltext zu den Modellen und umgekehrt
hergestellt werden kann.
5.1 Vereinfachtes Klassenmodell
Das nachfolgende Klassenmodell [Abb. 25] ist eine vereinfachte Darstellung
der tatsächlichen Klassenstruktur und dient hauptsächlich der Dokumentati-
on der wesentlichen Programmkomponenten und der Zuordnung der benö-
tigten Methoden zu ihren Klassen.
Die Formulare (Programmoberflächen) entsprechen der Notation „Tfm+For-
mularname“ oder „TDlg+Dialogname“ und sind von der Delphi-Klasse
„TForm“ abgeleitet.
Das Hauptformular ist „TfmUniStat“. Von diesem Formular aus werden alle
45
weiteren Programmfunktionen gesteuert. Das Formular für die Kalibrierung
wird in der Klasse „TfmCalibration“ definiert. Alle weiteren Formularklassen
sind nur wegen der Vollständigkeit in das Klassendiagramm aufgenommen
und übernehmen keine tragende Rolle.
Die Klasse „TMaschine“ kapselt alle wesentlichen Attribute und Methoden,
die für die Kommunikation mit der Prüfmaschine, das heißt indirekt über den
Umsetzer, benötigt werden. „TMaschine“ erbt, wie auch die Klasse „TCia-
ComPort“ direkt von „TComponent“.
Die Klasse „TConfig“ wird von „TMaschine“ instanziiert und kapselt insbe-
sondere Eigenschaften, die bei Programmstart geladen und bei Program-
mende wieder gespeichert werden müssen.
46
47
Abb. 25, Klassendiagramm "UniStat v0.8.1-beta"
ComPo
rt 1..1
Config 1..1 M
aschine
1..1
TMaschine
+ComPort:T CiaCom Port +Config:T Config
+Prepare4ByteSignal(hex:string ): vo id+StartCal ibration(): vo id+StopCal ibration(): vo id+StartT est(): vo id+InterruptT est(): void+ContinueT est(): void+StopT est(): vo id+SendCal ibrationValueT oContro l ler(Power:T M axPower , Value:int ): void-SendCom m and(cm d:string ): void
TComponent
TfmUniStat
+M aschine:T M aschine
-DataAvai lable(Sender:T Object ): void-Cal ibrate(Kanal :char , Value:int ): double-FindCom ponentByT ag(com p:T Com ponent , aT ag:int ): T Com ponent-SetAppLang(Sender:T Object , newLang:string ): void-InsertIntoT able(Sender:T Object , aX:double , aY:double ): void-SetSQL(Sender:T Object ): vo id-SetSQLNiveau(Sender:T Object ): void
TForm
TConfig
-ReadValuesFrom Ini (): void-SaveValuesT oIn i (): void-Ini tValues(): void
TCiaComPort
TfmCalibration
-DataAvai lable(Sender:T Object ): void-Correction(Sender:T Object , Nul l :WideString , M ax:WideString ): WideString
TfmSettings TDlgPassword TfmDiagramm
TfmDatabaseTfmCountDown
5.2 Programmteile und externe Module
Die prototypische Umsetzung des Konzeptes zur Gerätesteuerung und Aus-
wertung von Analysedaten erfolgte mit Delphi 7 ohne Änderungen. Der vor-
liegende Prototyp „UniStat Version 0.8.1-beta“ [Abb. 26] ist das Ergebnis
der Umsetzung aller wesentlichen Anforderungen und der konzeptionell aus-
gearbeiteten Festlegungen. Die Programmversion übertrifft dabei in hohem
Maße die Erwartungen an einen einfachen Prototypen und überzeugt damit
von einem guten Zusammenspiel aller eingesetzten Komponenten und Werk-
zeuge.
Auf eine explizite Beschreibung aller Quelltexte wird in dieser Arbeit verzich-
tet. Während der Entwicklung wurde stets darauf geachtet, „sprechende“
Bezeichner für Objekte, Attribute und Methoden zu verwenden. An kriti-
schen Stellen ist der Quelltext direkt mit Kommentaren versehen, wodurch
eine zusätzliche gute Lesbarkeit gewährleistet wird.
48
Abb. 26, UniStat Version 0.8.1-beta
Äquivalent zum Klassenmodell zeigt die Abbildung 27 die physischen Module
zur logischen Klassenstruktur, wie sie auch im Dateisystem („dcu“-Dateien)
wiederzufinden sind. In die zwei zusätzlichen Module „uDmUniStat“ und
„uStringManipulation“ wurden mehrfach verwendete Methoden und Typdefi-
nitionen ausgelagert.
49
Abb. 27, Komponentendiagramm "UniStat v0.8.1-beta"
uUniStat
TfmUniStat
uMaschine
TMaschine TConfig
uCiaCom Port
TCiaComPort
uCalibration
TfmCalibration
uStringManipulation
uDatabase
TfmDatabase
uDiagramm
TfmDiagramm
uDmUniStat
TdmUniStat
uPassword
TDlgPassword
uSettings
TfmSettings
uCountDown
TfmCountDown
Der kompilierte Prototyp der Version 0.8.1-beta befindet sich in der Datei
„UniStat.exe“ und liegt zusammen mit den Modulen im Programmordner
[Abb. 28].
5.3 Implementierung der benötigten Methoden
Dieses Kapitel beschreibt unter direktem Bezug auf das DV-Konzept [Kapitel
4.2.3 Benötigte Methoden] die Implementierung der einzelnen Methoden.
5.3.1 COM-Port auslesen
Die Methode „DataAvailable“ ist eine Thread-Methode. Durch Übergabe an
den COM-Port-Thread und Öffnen des COM-Ports bleibt diese Methode
solange parallel zur Anwendung aktiv, bis der COM-Port wieder geschlossen
wird. „DataAvailable“ liest dabei kontinuierlich jedes Byte des COM-Port-
Puffers aus und übergibt es als hexadezimalen Wert an die Methode
„Prepare4ByteSignal“ [Tab. 9] zur Weiterverarbeitung. Bis zu dieser Stelle
sind die Methoden aus den Tabellen 7 und 8 identisch implementiert. Ihr
Unterschied besteht in einer abweichenden Manipulation der Program-
moberfläche beziehungsweise der Datenbank.
50
Abb. 28, Programmordner "UniStat v0.8.1-beta"
Methode private procedure DataAvailable(Sender: TObject);
Klasse TfmUniStat = class(TForm)
Eingabe - Sender: Formular-Objekt von TfmUniStat
Ausgabe keine
Tab. 7, Methode "DataAvailable, [TfmUniStat]"
„DataAvailable“ aus Tabelle 7 korrigiert entsprechend die empfangenen
Werte und schreibt sie in die ausgewählte Tabelle der Projekt-Datenbank
(siehe auch Tab. 13, Methode "Calibrate" und Tab. 23, Methode
"InsertIntoTable") und stellt sie anschließend im Weg-Belastungs-Diagramm
des Hauptfensters grafisch dar.
Methode private procedure DataAvailable(Sender: TObject);
Klasse TfmCalibration = class(TForm)
Eingabe - Sender: Formular-Objekt von TfmCalibration
Ausgabe keine
Tab. 8, Methode "DataAvailable, [TfmCalibration]"
„DataAvailable“ der Klasse „TfmCalibration“ [Tab. 8] sorgt für eine kontinu-
ierliche Aktualisierung und grafischen Darstellung der empfangenen Daten
im Kalibrierungsfenster. Des Weiteren schafft sie durch die Ermittlung ent-
sprechender Mittelwerte der empfangenen Daten die Grundlage für die Be-
rechnung der Korrekturfaktoren und Korrekturwerte [Abb. 5 und Abb. 6].
Methode public procedure Prepare4ByteSignal(hex: string);
Klasse TMaschine = class(TComponent)
Eingabe - hex: hexadezimale Zeichenkette
Ausgabe keine
Tab. 9, Methode "Prepare4ByteSignal"
Für den Aufbau, die Analyse und Zerlegung der 32-Bit-Folgen ist die
Methode „Prepare4ByteSignal“ zuständig. Sie akkumuliert die durch
„DataAvailable“ an sie übergebenen Werte zu gültigen 32-Bit-Folgen und
zerlegt diese im Anschluss in die gemäß Tabelle 2 definierten Bestandteile.
5.3.2 Steuerungsbefehle senden
Die Methode „SendCommand“ [Tab. 10] formatiert die ihr übergebene hexa-
dezimale Zeichenfolge in ihre numerische Entsprechung und sendet das Er-
51
gebnis an den geöffneten COM-Port.
Analog zum DV-Konzept [Kapitel 4.2.3] kapseln die in Tabelle 11 zusammen-
gefassten Methoden unter Nutzung von „SendCommand“ die jeweiligen Be-
fehlsfolgen zur Steuerung der Härteprüfmaschine. Um eine bessere Referenz
zum DV-Konzept zu gewährleisten, ist jeweils unter der Methodendeklarati-
on in Tabelle 11 die deutsche Bedeutung angegeben.
Methode private procedure SendCommand(cmd: string);
Klasse TMaschine = class(TComponent)
Eingabe - cmd: hexadezimale Zeichenfolge
Ausgabe keine
Tab. 10, Methode "SendCommand"
Methode public procedure StartCalibration;
„Kalibrierungsmodus aktivieren“
public procedure StopCalibration;
„Kalibrierungsmodus deaktivieren“
public procedure StartTest;
„Härteprüfung starten“
public procedure InterruptTest;
„Härteprüfung anhalten“
public procedure ContinueTest;
„Härteprüfung fortsetzen“
public procedure StopTest;
„Härteprüfung stoppen“
Klasse TMaschine = class(TComponent)
Eingabe keine
Ausgabe keine
Tab. 11, Methoden "Steuerungsbefehle"
5.3.3 Kalibrierungswert senden
Mit der in Tabelle 12 deklarierten Methode lässt sich ein ganzzahliger Wert
(„Value“) in Abhängigkeit seines Messbereiches („Power“) an den COM-Port
senden. „SendCalibrationValueToController“ nutzt dabei ebenfalls die Me-
thode „SendCommand“ [Tab. 10]. Unter Beachtung des in Tabelle 5 (Daten-
format "Steuerungssoftware") definierten Datenformates [„K11“ bis „K0“],
52
wandelt „SendCalibrationValueToController“ den übergebenen ganzzahligen
Wert vor dem Senden entsprechend um.
„TMaxPower“ definiert hierbei einen Aufzählungstyp (p5kp, p10kp, p15kp,
p25kp, p30kp, p31kp, p62kp, p125kp, p187kp, p250kp), mit dessen Hilfe die
Zuordnung der möglichen Messbereiche zum Befehlssatz [Tab. 1] erfolgen
kann.
Methode public procedure SendCalibrationValueToController
(Power: TMaxPower; Value: integer);
Klasse TMaschine = class(TComponent)
Eingabe - Power: gewählter Messbereich vom Typ „TMaxPower“
- Value: ganzzahliger Messwert
Ausgabe keine
Tab. 12, Methode "SendCalibrationValueToController"
5.3.4 Messwerte korrigieren
Aufgerufen von der Methode „DataAvailable“ [Tab. 7] liefert „Calibrate“ den
jeweils korrigierten Wert zu dem Eingabeparameter „Value“. Die Eingabe
„Kanal“ entscheidet innerhalb der Funktion „Calibrate“ über die zu verwen-
denden Korrekturwerte und Korrekturfaktoren.
Methode private function Calibrate
(Kanal: char; Value: integer): Double;
Klasse TfmUniStat = class(TForm)
Eingabe - Kanal: benötigter Kanal 'X' oder 'Y'
- Value: zu kalibrierender ganzzahliger Wert
Ausgabe - Ergebnis: gebrochenrationale Zahl
Tab. 13, Methode "Calibrate"
Als Grundlage zur Berechnung dienen die von der Methode „Correcti-
on“ [Tab. 14] zur Verfügung gestellten Korrekturfaktoren, gemäß den Abbil-
dungen 5 und 6, welche nach erfolgreicher „Kalibrierung“ global zur Verfü-
gung stehen.
53
Methode private function Correction
(Sender: TObject; Null, Max: WideString): WideString;
Klasse TfmCalibration = class(TForm)
Eingabe - Sender: Formular-Objekt von TfmCalibration
- Null: Mittelwert der Untergrenze [Abb. 5 und 6]
- Max: Mittelwert der Obergrenze [Abb. 5 und 6]
Ausgabe - Ergebnis: gebrochenrationale Zahl als Zeichenkette
Tab. 14, Methode "Correction"
5.3.5 Anwendungssprache ändern
Gemäß den Anforderungen soll es möglich sein, die Anwendungssprache
zwischen Deutsch, Englisch und Russisch ändern zu können. Mit den Stan-
dard-Delphi-Komponenten lassen sich jedoch keine Multi-Byte-Zeichen dar-
stellen, wie es beispielsweise für den kyrillischen Zeichensatz nötig wäre.
Eine Lösung kann hier die Nutzung von unicode-fähigen Komponenten wie
etwa die „TntWare Delphi Unicode Controls“ [TNT] sein. Im Projekt „Uni-
Stat“ konnten diese Komponenten mit Erfolg eingesetzt werden.
Methode private procedure SetAppLang
(Sender: TObject; newLang: string);
Klasse TfmUniStat = class(TForm)
Eingabe - Sender: Formular-Objekt von TfmUniStat
- newLang: 'english', 'german' oder 'russian'
Ausgabe keine
Tab. 15, Methode "SetAppLang"
Das Ändern der Applikationssprache erfolgt mit der Methode
„SetAppLang“ [Tab. 15]. Anhand des ihr übergebenen Sprachschlüssels
(„newLang“) wird die passende Textdatei (hier: english.txt, german.txt oder
russian.txt) initialisiert und zeilenweise ausgewertet.
Die Textdateien befinden sich im Programmpfad [Abb. 28] im Verzeichnis
„languages“, sie sind UTF8-kodiert und entsprechen dem Schema nach Ab-
bildung 29.
54
Methode private function FindComponentByTag
(comp: TComponent; aTag: integer): TComponent;
Klasse TfmUniStat = class(TForm)
Eingabe - comp: Komponente der Applikation
- aTag: ganzzahliger Wert gemäß „sprache.txt“
Ausgabe - Ergebnis: Komponente der Applikation mit „aTag“ oder „nil“
Tab. 16, Methode "FindComponentByTag"
Die Methode „FindComponentByTag“ aus Tabelle 16 wird von der Methode
„SetAppLang“ aufgerufen. Durch einen rekursiven Suchalgorithmus ermit-
telt sie die passende Komponente zum „aTag“, deren Eigenschaft „Text“
oder „Caption“ dann durch „SetAppLang“ geändert werden kann. Vorausset-
zung für eine erfolgreiche Suche ist allerdings, dass die Eigenschaft „Tag“
jeder übersetzungsrelevanten Komponente entsprechend gepflegt ist. Der
„Tag“ muss aus acht Ziffern (mit führender Null) bestehen und sollte nach
dem Muster aus Abbildung 29 aufgebaut sein. Die Textdateien sind beliebig
erweiterbar und die Textfelder können jederzeit angepasst werden.
55
Abb. 29, Textdatei Auszug "german.txt"
5.3.6 Programmeinstellungen laden
Direkt nach dem Programmstart wird die Methode „InitValues“ [Tab. 17]
aufgerufen. Sollte „InitValues“ die Konfigurationsdatei „UniStat.ini“ nicht
finden, wird diese automatisch im Programmverzeichnis neu erstellt. Des
Weiteren sorgt „InitValues“ für eine Initialisierung der in Kapitel 4.2.3
[Tab. 6] angegebenen Parameter.
Methode private procedure InitValues;
Klasse TConfig = class()
Eingabe keine
Ausgabe keine
Tab. 17, Methode "InitValues"
„ReadValuesFromIni“ [Tab. 18] wird im Anschluss an „InitValues“ ausge-
führt und liest die Konfigurationsdatei „UniStat.ini“ ein. Mit allen gültigen
Werten aus der Konfigurationsdatei überschreibt „ReadValuesFromIni“ die
Initialwerte aus Tabelle 6.
Methode private procedure ReadValuesFromIni;
Klasse TConfig = class()
Eingabe keine
Ausgabe keine
Tab. 18, Methode "ReadValuesFromIni"
Das Format der Konfigurationsdatei „UniStat.ini“ zeigt Abbildung 30. Der
hier enthaltene Abschnitt „[Statistic]“ besitzt nur informativen Charakter
und ist nicht für den Programmablauf entscheidend. Welche Programmein-
stellungen sich in den einzelnen Abschnitten der Konfigurationsdatei wieder-
finden, zeigt Tabelle 19.
56
Abschnitt Programmeinstellungen
[AdditionX] Additionsfehler X-Kanal
[CorrectionValuesX] Korrekturfaktor X-Kanal
[AdditionY] Additionsfehler Y-Kanal
[CorrectionValuesY] Korrekturfaktoren für den Y-Kanal der Messbereiche
5; 10; 15,5; 25; 30; 31,2; 62,5; 125; 187,5; 250 [kp]
[COM-Port] letzter verwendeter COM-Port
[MaxOfPower] letzter verwendeter Messbereich
[NumberOfValuesForN0]
Anzahl der abzuwartenden Messwerte beim Start der
Härteprüfung
[TimeOfInterrupt] Unterbrechungszeit der Härteprüfung in Sekunden
Tab. 19, Abschnitte der Konfigurationsdatei „UniStat.ini“
57
Abb. 30, Konfigurationsdatei "UniStat.ini"
5.3.7 Programmeinstellungen speichern
Äquivalent zum Laden der Programmeinstellungen erfolgt auch das
Speichern. Mit dem Programmende wird automatisch die Methode
„SaveValuesToIni“ [Tab. 20] aufgerufen. Sie speichert gemäß den Vorgaben
aus den Tabellen 6 und 19 alle Programmeinstellungen in der
Konfigurationsdatei „UniStat.ini“ [Abb. 30].
Methode private procedure SaveValuesToIni;
Klasse TConfig = class()
Eingabe keine
Ausgabe keine
Tab. 20, Methode "SaveValuesToIni"
5.3.8 Datenbank anbinden
Für die Arbeit mit dem Programm „UniStat“ zur Gerätesteuerung und Aus-
wertung von Analysedaten muss zu Beginn ein Projekt, im Sinne einer Da-
tenbank geladen werden. Hierzu sind einige Typ-Deklarationen notwendig,
deren Ort und Syntax der Abbildung 31 entnommen werden kann.
Im „Projekt öffnen“-Dialog der Anwendung („TfmUniStat“) werden der
Verbindungsstring „ConnectionString“ und weitere Eigenschaften von
„ADOConnect“ dynamisch gesetzt. Der folgende Quelltextauszug beinhaltet
die Syntax zu dieser Datenbankanbindung, deren genauer Aufbau dem
Delphi-Verbindungsassistenten entnommen wurde. Die Eigenschaft
„Filename“ des Öffnen-Dialoges beinhaltet den Dateinamen der aktuell zu
ladenden Datenbank (z.B. „UniStat.mdb“).
58
Abb. 31, Komponente "uDmUniStat"
uDmUniStat
TdmUniStat
+ADOConnect:T ADOConnection +quSelectXY:T ADOQuery +quSelectNiveauY:T ADOQuery +quInsertInto:T ADOQuery +quDele teAl l :T ADOQuery +quCreateT able:T ADOQuery
with dmUniStat.ADOConnect dobegin if Connected then Connected := False; ConnectionString := 'Provider=MSDASQL.1;'+ 'Persist Security Info=False;Mode=ReadWrite;'+ 'Extended Properties="DBQ='+ TntOpenDialogProjects.FileName + ';Driver={Microsoft Access-Treiber (*.mdb)};'+ 'DriverId=25;FIL=MS Access;MaxBufferSize=2048;MaxScanRows=8;'+ 'PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;'+ 'UserCommitSync=Yes;"'; CommandTimeout := 30; ConnectOptions := coConnectUnspecified; CursorLocation := clUseClient; DefaultDatabase :=''; IsolationLevel := ilCursorStability; KeepConnection := True; LoginPrompt := False; Connected := True;end;
Wenn die Eigenschaft „Connected“ von „ADOConnect“ auf „True“ gesetzt
wird, ist die Datenbankverbindung aktiv.
Die Methode „SetSQL“ [Tab. 21] wird immer dann aufgerufen, wenn sich Än-
derungen an dem Projekt selbst oder an den Datenbanktabellen (Diagram-
men) ergeben haben. In diesen Fällen passt „SetSQL“ die Abfragen („quSe-
lectNiveauY“, „quSelectXY“ und „quDeleteAll“) wie folgt an, so dass bei Be-
darf immer die Werte des aktuellen Diagramms aus der Datenbanktabelle
gelesen beziehungsweise gelöscht werden können:
with quSelectNiveauY do begin SQL.Clear; SQL.Add('SELECT y FROM ' + „aktuelles Diagramm (Tabelle)“ + ' GROUP BY y'); Prepared := True; end; with quSelectXY do begin SQL.Clear; SQL.Add('SELECT id,x,y FROM ' + „aktuelles Diagramm (Tabelle)“ + ' ORDER BY id'); Prepared := True; end; with quDeleteAll do begin SQL.Clear; SQL.Add('DELETE * FROM ' + „aktuelles Diagramm (Tabelle)“); Prepared := True; end;
Das Setzen der Eigenschaft „Prepared“ der einzelnen Abfragen auf „True“
59
sorgt dafür, dass sie nach geringer Laufzeit einsatzbereit sind und die ge-
wünschten Ergebnisse liefern können.
Methode private procedure SetSQL(Sender: TObject);
Klasse TfmUniStat = class(TForm)
Eingabe - Sender: Formular-Objekt von TfmUniStat
Ausgabe keine
Tab. 21, Methode "SetSQL"
Des Weiteren bekommt der Anwender gemäß des Anforderungskataloges
aus Kapitel 2.2.4 (Anforderungen an die Auswertung) die Möglichkeit, über
ein Auswahlmenü das Niveau (untere Grenze) der Y-Werte bestimmen zu
können.
Methode private procedure SetSQLNiveau(Sender: TObject);
Klasse TfmUniStat = class(TForm)
Eingabe - Sender: Formular-Objekt von TfmUniStat
Ausgabe keine
Tab. 22, Methode "SetSQLNiveau"
Nach Wahl dieser Funktionalität wird durch die Methode „SetSQLNi-
veau“ [Tab. 22] die Abfrage „quSelectXY“ folgendermaßen modifiziert:
with dmUniStat.quSelectXY do begin SQL.Clear; SQL.Add('SELECT id,x,y FROM ' + „aktuelles Diagramm (Tabelle)“); SQL.Add('WHERE y>=' + „ausgewählter Y-Wert“ + ' ORDER BY id;'); Prepared := True; end;
Aufgerufen von der Methode „DataAvailable“ [Tab. 7, Methode
"DataAvailable, [TfmUniStat]"] passt „InsertIntoTable“ [Tab. 23] die SQL-
Anweisung „quInsertInto“ zum Einfügen der übergebenen Werte „aX“ und
„aY“ in die Datenbank an und führt diese im Anschluss („ExecSQL“) aus.
60
Methode private procedure InsertIntoTable
(Sender: TObject; aX, aY: double);
Klasse TfmUniStat = class(TForm)
Eingabe - Sender: Formular-Objekt von TfmUniStat
- aX: gebrochenrationale Zahl [für Kanal X]
- aY: gebrochenrationale Zahl [für Kanal Y]
Ausgabe keine
Tab. 23, Methode "InsertIntoTable"
Nach dem Schreibvorgang in die Datenbank übergibt „InsertIntoTable“ die
Werte „aX“ und „aY“ an eine weitere Methode zur grafischen Darstellung.
Die SQL-Anweisung wird wie folgt zusammengesetzt:
with dmUniStat.quInsertInto do begin SQL.Clear; SQL.Add('INSERT INTO ' + „aktuelles Diagramm (Tabelle)“ + ' (x,y) VALUES ('); SQL.Add(„X-Wert“ + ','); SQL.Add(„Y-Wert“ + ');'); Prepared := True; ExecSQL; end;
61