AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Prüfsoftware möglichst objektorientiert programmieren...
Thema durchsuchen
Ansicht
Themen-Optionen

Prüfsoftware möglichst objektorientiert programmieren...

Ein Thema von DelphiManiac · begonnen am 11. Jul 2007 · letzter Beitrag vom 27. Jul 2007
Antwort Antwort
Seite 2 von 2     12   
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#11

Re: Prüfsoftware möglichst objektorientiert programmieren...

  Alt 24. Jul 2007, 16:16
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
  Mit Zitat antworten Zitat
DelphiManiac

Registriert seit: 5. Dez 2005
742 Beiträge
 
#12

Re: Prüfsoftware möglichst objektorientiert programmieren...

  Alt 27. Jul 2007, 22:01
*push*
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es 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

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz