|
![]() |
|
Registriert seit: 5. Dez 2005 742 Beiträge |
#1
Hallo @all
wollte euch mal auf dem Laufendem halten, was meine Prüfsoftware angeht, und mit euch ein wenig diskutieren, wie und was man optimieren / ändern kann / sollte. Habe ja, denke wie viele das Problem, dass ich meine Datenhaltung und Logik von meiner Darstellung trennen will, das habe ich auch sehr strikt gemacht, die GUI kennt bei meiner Prüfsoftware eigentlich nur das Objekt zur Prüfungsverwaltung (das die Prüfungen ausführt). Das heißt meine TTestControl Klasse verwaltet Prüfobjekte (vom Typ TTest) in einer Liste, die es dann wenn es aufgefordert wird nacheinander startet. Die GUI (bzw) der Controller der GUI erzeugt nun, die zu testenden Tests und übergibt sie den TTestcontrol Objekt sieht dann ungefähr so aus:
Delphi-Quellcode:
with FrmMainGUI do
begin einIniFile:=TIniFile.Create(ProgrammDataset.IniName); einControlTest.ClearTest; // Liste leeren einControlTest.OnShowFortschrittGesamt:=FrmMainGUI.ShowFortSchrittTestGesamt; if cbCom2EPTPruef.Checked then begin einIniFile.WriteInteger('TestConfig','Com2EPTPruef',1); einTest:=TTestCommu2EPTPruef.Create; einTest.OnShowProgress:=FrmMainGUI.ShowFortSchrittTest; einControlTest.AddTest(einTest); end else begin einIniFile.WriteInteger('TestConfig','Com2EPTPruef',0); end; if cbComm2Calibrator.Checked then begin einIniFile.WriteInteger('TestConfig','Com2Calibrator',1); einTest:=TTestCommu2Calibrator.Create; einTest.OnShowProgress:=FrmMainGUI.ShowFortSchrittTest; einControlTest.AddTest(einTest); end else begin einIniFile.WriteInteger('TestConfig','Com2Calibrator',0); end; if cbComm2Multimeter.Checked then begin einIniFile.WriteInteger('TestConfig','Com2Multimeter',1); einTest:=TTestCommu2Multimeter.Create; einTest.OnShowProgress:=FrmMainGUI.ShowFortSchrittTest; einControlTest.AddTest(einTest); end else begin einIniFile.WriteInteger('TestConfig','Com2Multimeter',0); end; if cbComm2EPT.Checked then begin // end; if cbUSBControllerParamet.Checked then begin einIniFile.WriteInteger('TestConfig','USBControllerParamtetrieren',1); einTest:=TTestProgramFTDI.Create; einTest.OnShowProgress:=FrmMainGUI.ShowFortSchrittTest; einControlTest.AddTest(einTest); end else begin einIniFile.WriteInteger('TestConfig','USBControllerParamtetrieren',0); end; if cbFlash.Checked then begin einIniFile.WriteInteger('TestConfig','Flashen',1); einTest:=TTestFlashADuC.Create(ProgrammDataset.FlashPfad); einTest.OnShowProgress:=FrmMainGUI.ShowFortSchrittTest; einControlTest.AddTest(einTest); end else begin einIniFile.WriteInteger('TestConfig','Flashen',0); end; if cbParameter.Checked then begin einTest:=TTestWriteParameter.Create(ProgrammDataset.Parameterdatei); einTest.OnShowProgress:=FrmMainGUI.ShowFortSchrittTest; einControlTest.AddTest(einTest); einIniFile.WriteInteger('TestConfig','ParameterUebertragen',1); end else begin einIniFile.WriteInteger('TestConfig','ParameterUebertragen',0); end; if cbDisplayTest.Checked then begin einIniFile.WriteInteger('TestConfig','DisplayTastenTest',1); einTest:=TTestTasten.Create; einTest.OnShowProgress:=FrmMainGUI.ShowFortSchrittTest; einControlTest.AddTest(einTest); end else begin einIniFile.WriteInteger('TestConfig','DisplayTastenTest',0); end; if cbPruefeRelais.Checked then begin einIniFile.WriteInteger('TestConfig','RelaisTest',1); einTest:=TTestRelais.Create; einTest.OnShowProgress:=FrmMainGUI.ShowFortSchrittTest; einControlTest.AddTest(einTest); end else begin einIniFile.WriteInteger('TestConfig','RelaisTest',0); end; if cbDataLoggerClock.Checked then begin einIniFile.WriteInteger('TestConfig','DatenloggerSetTimeDate',1); einTest:=TTestDataLoggerClock.Create; einTest.OnShowProgress:=FrmMainGUI.ShowFortSchrittTest; einControlTest.AddTest(einTest); end else begin einIniFile.WriteInteger('TestConfig','DatenloggerSetTimeDate',0); end; if cbKalibriereAnalogEingang.Checked then begin einIniFile.WriteInteger('TestConfig','AnalogEingangKalibrierung',1); einTest:=TTestKalibriereAnalogEingang.Create; einTest.OnShowProgress:=FrmMainGUI.ShowFortSchrittTest; TTestKalibriereAnalogEingang(einTest).OnDigitEvent:=frmMainGUI.ShowDigtTest;; einControlTest.AddTest(einTest); end else begin einIniFile.WriteInteger('TestConfig','AnalogEingangKalibrierung',0); end; if cbKalibriereCTEingang.Checked then begin einIniFile.WriteInteger('TestConfig','CTEingangKalibrierung',1); einTest:=TTestKalibriereCTEingang.Create; einTest.OnShowProgress:=FrmMainGUI.ShowFortSchrittTest; TTestKalibriereCTEingang(einTest).OnDigitEvent:=frmMainGUI.ShowDigtTest;; einControlTest.AddTest(einTest); end else begin einIniFile.WriteInteger('TestConfig','CTEingangKalibrierung',0); end; if cbOLCTTest.Checked then begin einIniFile.WriteInteger('TestConfig','OLCTTest',1); einTest:=TTestOLCTModul.Create; einTest.OnShowProgress:=FrmMainGUI.ShowFortSchrittTest; einControlTest.AddTest(einTest); end else begin einIniFile.WriteInteger('TestConfig','OLCTTest',0); end; if cbPT100Kalibrierung.Checked then begin einIniFile.WriteInteger('TestConfig','PT100Kalibrierung',1); einTest:=TTestKalibrierePT100Eingang.Create; TTestKalibrierePT100Eingang(einTest).OnDigitEvent:=frmMainGUI.ShowDigtTest;; einTest.OnShowProgress:=FrmMainGUI.ShowFortSchrittTest; einControlTest.AddTest(einTest); end else begin einIniFile.WriteInteger('TestConfig','PT100Kalibrierung',0); end; if cbAnalogOut1.Checked then begin einIniFile.WriteInteger('TestConfig','AnalogAusgang1Kalibrierung',1); einTest:=TTestKalibriereAnalogAusgang.Create(1); // TTestKalibrierePT100Eingang(einTest).OnDigitEvent:=frmMainGUI.ShowDigtTest;; einTest.OnShowProgress:=FrmMainGUI.ShowFortSchrittTest; einControlTest.AddTest(einTest); end else begin einIniFile.WriteInteger('TestConfig','AnalogAusgang1Kalibrierung',0); end; if cbAnalogOut2.Checked then begin einIniFile.WriteInteger('TestConfig','AnalogAusgang2Kalibrierung',1); einTest:=TTestKalibriereAnalogAusgang.Create(2); // TTestKalibrierePT100Eingang(einTest).OnDigitEvent:=frmMainGUI.ShowDigtTest;; einTest.OnShowProgress:=FrmMainGUI.ShowFortSchrittTest; einControlTest.AddTest(einTest); end else begin einIniFile.WriteInteger('TestConfig','AnalogAusgang2Kalibrierung',0); end; end; end; Gut, die Logik (was ein Test machen muss) kennt nur das Testobjekt, genauso wie die Daten, die es erzeugt testet, oder sonst was damit macht (zB.: kalbrieren). Ich habe nun ein Event, an das die GUI sich anmelden kann und dann Daten übergeben bekommt zur Anzeige. Mein Problem ist nun, da die Tests ja sehr unterschiedlich sind (d.h. auch unterschiedliche Daten) muss das Event ja auch überall anders aussehen, und dann muss ich ja sehr viele Events erzeugen usw... Kann man das irgendwie Objektorientiert besser lösen, bin über jeden Vorschlag dankbar Gruß DelphiManiac |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus. Trackbacks are an
Pingbacks are an
Refbacks are aus
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |