Das existiert seit ewig, bekannt sind mir die folgenden Quellen (ohne Anspruch auf Vollzähligkeit)
teddy278 - User gelöscht, auch alle Beiträge gelöscht - Programmquellen auch gelöscht, ausser der tatsache , das das Thema von ihm angerissen wurde, wenig bekannt
badenpower - User gelöscht, Programmquellen nicht auffindbar oder gelöscht,
Badenpowers HM-Investigator kann diese GeisterChannelbezüge auch aufspüren und beseitigen
Black - SDV (auch schon die alte 2er Version ) kann dieses auch aufspüren und beseitigen,
zum aufspüren, ob so ein Geisterbezug existiert, dieses kleine Script, welches von jedem ausgeführt werden kann (und fast identisch auch auf dem SDV läuft)
Code: Alles auswählen
WriteLine ("KonsistenzCheck Systemvariablen Channelbezug");
WriteLine ("Überprüft auf gültigen Channelbezug");
WriteLine ("Black in 2019");
WriteLine ("-----------------------------------------");
object oChan;
object oID;
string sID;
integer nErr=0;
string sList="";
string sCorr="";
foreach (sID,dom.GetObject (ID_SYSTEM_VARIABLES).EnumIDs () ) {
oID= dom.GetObject (sID);
if (oID) {
if (oID.Channel () != ID_ERROR) {
oChan= dom.GetObject (oID.Channel () );
if (oChan) {
if (oChan.Type() != OT_CHANNEL) {
WriteLine ("[ID: " # oID.ID ()# "] \""#oID.Name() # "\" Channel verweist auf falschen Objekttyp (ID: "#oID.Channel () # " - " # oChan.TypeName () # ")" # sCorr);
sList=sList # oID.ID () # "\t";
nErr=nErr+1;
}
} else {
WriteLine ("[ID: " # oID.ID ()# "] \""#oID.Name() # "\" Channel verweist auf nicht exisierendes Object (ID: "#oID.Channel () # ")" # sCorr);
sList=sList # oID.ID () # "\t";
nErr=nErr+1;
}
}
}
}
if (nErr!=0) {WriteLine ("-----------------------------------------"); }
WriteLine ("Geprüft: " # dom.GetObject (ID_SYSTEM_VARIABLES).Count () # " Systemvariablen");
WriteLine ("Davon " # nErr # " Systemvariablen mit inkorrektem Bezug in Channel () ");
sList=sList.Trim ();