AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene Klasse für Steuerungen

Ein Thema von Vienesko · begonnen am 28. Okt 2017 · letzter Beitrag vom 23. Nov 2017
 
Vienesko

Registriert seit: 21. Mai 2017
Ort: Hamburg
13 Beiträge
 
#1

Eigene Klasse für Steuerungen

  Alt 28. Okt 2017, 15:26
Moin moin,

ich bräuchte mal wieder eure Hilfe.
Ich habe schon diverse Tutorials gelesen (unter anderem das von Luckie und Bertram Hafner) zur Erstellung eigener Klassen und auch hier im Forum gesucht aber irgendwie will der Funke nicht überspringen.

Kurze Erklärung was passieren soll:
Ich programmiere gerade an einer Oberfläche für eine eigene Haussteuerung. Diese Oberfläche ist nach Räumen unterteilt. Jeder Raum hat einen Kopf und einen Körper (ist mit Panels realisiert)und der ist dann nach Geräten unterteilt (siehe Anhang).

Wenn ich das so wie bisher machen würde, hätte ich danach einen ziemlich umfangreichen Code, durch den ich wahrscheinlich selbst nicht mehr durchblicken würde. Also habe ich mich entschieden, eigene eigene Unit (Steuerungen) mit einigen Klassen zu schreiben.

So soll es dann eine Klasse fürs Licht geben, eine für die Heizungen usw. die dann jeweils die Funktionen enthalten, die ich für die jeweiligen Geräte brauche.

So und nun zu meinem Problem:
Wenn ich meine Unit (Steuerungen) in das Hauptprogramm einbinde, finde ich diese auch. Also z.B. LichtEcke.LichtEinschalten; - führt dann aber zu einer Zugriffsverletzung.
LichtEcke := TLicht.Create; habe ich wahlweise bei OnCreate als auch bei ButtonClick schon probiert. Geht beides nicht. Das Problem muss also in der Unit "Steuerungen" liegen. So wie ich das verstanden habe, versuche ich da auf irgendwas zu zugreifen, was (in dem Moment) nicht existiert.

Hier erstmal der Code der Unit:
Delphi-Quellcode:
unit Steuerungen;

interface
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids,
  Vcl.Samples.Calendar, Vcl.ExtCtrls, Vcl.ComCtrls, Vcl.Menus, Vcl.StdActns,
  System.Actions, Vcl.ActnList, Data.DBXMySQL, Data.DB, Data.SqlExpr,
   Vcl.MPlayer, Vcl.OleCtrls, SHDocVw, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdHTTP, XmlIntf, Xml.xmldom, Xml.Win.msxmldom,
  Xml.XMLDoc, Data.FMTBcd, Vcl.DBCtrls, ShellApi, Xml.omnixmldom;


type TLicht = class
private
   FState:boolean;
   FPower:real;
   FEnergyCounter:real;
   FFrequency:real;
   FCurrent:real;
   FVoltage:real;
   FError:String;
   FSeriennummer:String;
   FKanal:String;
   HTTP1:TidHTTP;
public
  constructor create (Seriennummer, Kanal:string);
  procedure LichtEinschalten;
  procedure LichtAusschalten;
  function UpdateAll:string;
  function UpdateState:string;
end;


implementation
constructor TLicht.create(Seriennummer: string; Kanal: string);
begin inherited create;
  FSeriennummer:=Seriennummer;
  FKanal:=Kanal;
end;

procedure TLicht.LichtEinschalten;
begin
HTTP1.Get('http://192.168.178.10/config/xmlapi/statechange.cgi?ise_id=1732&new_value=1');
end;

procedure TLicht.LichtAusschalten;
begin

end;

function TLicht.UpdateAll;
begin

end;

function TLicht.UpdateState;
begin

end;

end.
Wundert euch bitte nicht über die vielen uses. Habe erstmal alles eingebunden, was auch die Hauptunit benutzt.
Wenn es bei der einen procedure klappt kann ich mir den Rest wieder auf eigene Faust herleiten.
Nach Stunden des hin und hers brauche ich mal einen Anstupser in die richtige Richtung.

Vielen Dank im Voraus
Angehängte Grafiken
Dateityp: jpg Steuerungen.jpg (29,6 KB, 59x aufgerufen)
  Mit Zitat antworten Zitat
 

 

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 15:59 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