Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Aufrufe von Klassen untereinander

Frage Entwicklung Visual Studio

Mitglied: MarcoBorn

MarcoBorn (Level 1) - Jetzt verbinden

03.06.2014, aktualisiert 04.06.2014, 1112 Aufrufe, 7 Kommentare

Hallo Forum,
in meinem Projekt habe ich folgendes Konstrukt:

Eine Klasse "Import" besitzt eine Funktion "StatusfensterNeu", die ein Formular aus einer Klasse "Statusfenster" anzeigt. Jetzt habe ich eine neue Klasse "Vergleich" angelegt, die ebenfalls das Formular anlegt. Der Code dazu sieht verkürzt wie folgt aus:


Public Class Import
Dim mbo_StatusFenster As StatusFenster
Dim m_Status as String
...

Public Sub WordImport()
mbo_StatusFenster = New StatusFenster
m_status = MboStatusfensterNeu("Alte Daten löschen", "1/15: ", 100)
...
End Sub

Public Function MboStatusfensterNeu(q As String, switch As String, fortschritt As Double) As String
...
If mbo_StatusFenster.Visible = False Then mbo_StatusFenster.Show
...
End Sub

End Class



Jetzt habe ich eine neue Klasse "Vergleich", die ebenfalls dieses Statusfenster anzeigen soll. Mein Code sieht wie folgt aus:

Public Partial Class Vergleich
Dim mbo_StatusFenster As StatusFenster
Dim m_Status as String
Dim mbo_Import As New Import
...

Sub Tabellen_vergleichen
mbo_StatusFenster = New StatusFenster
m_status = mbo_Import.MboStatusfensterNeu("Alte Daten löschen", "1/15: ", 100)
...
End Sub

End Class



Ich bekomme jedoch immer eine Fehlermeldung, dass der Verweis nicht auf eine Objektinstanz gelegt wurde. Die Funktion MboStatusfensterNeu wird jedoch aufgerufen, da ich dort noch eine temporäre MsgBox anzeigen lassen kann. Will ich jedoch das Formular anzeigen, bricht das Makro ab. Irgendwie wird die Klasse StatusFenster nicht korrekt erkannt. Wie muss ich meinen Code umstellen, damit das Ganze funktioniert?

Vielen Dank,
M. Born
Mitglied: MarcoBorn
04.06.2014 um 14:58 Uhr
Gibt es hier keinen, der mir einen Tipp geben kann, wie ich den Code umbauen muss, damit es läuft?
Bitte warten ..
Mitglied: colinardo
LÖSUNG 04.06.2014, aktualisiert um 15:29 Uhr
Moin Marco,
Zitat von MarcoBorn:
Gibt es hier keinen, der mir einen Tipp geben kann, wie ich den Code umbauen muss, damit es läuft?
Gibt es schon, wenn du deinen Beitrag entsprechend überarbeitest das ihn jemand verstehen kann, die Klassen sind nicht alle ersichtlich (z.B. fehlt die Definition der Klasse StatusFenster, etc). Hier fehlt dem helfenden absolut der Zusammenhang und wichtige Bestandteile deiner Klassen und das was du vorhast !

Und bitte benutze Code-Tags zum Posten deiner Codes.

Merci.

Grüße Uwe
Bitte warten ..
Mitglied: MarcoBorn
04.06.2014 um 15:29 Uhr
Hallo Uwe,
das mit den Code-Tags war mir nicht bekannt. Die Einrückungen hatte ich manuell gemacht. Daher baue ich sie jetzt noch mal mit den Tags neu. Erstmal der Code der ersten Klasse:

01.
Public Class Import 
02.
  Dim mbo_StatusFenster As StatusFenster 
03.
  Dim m_Status as String 
04.
  ... 
05.
 
06.
  Public Sub WordImport() 
07.
    mbo_StatusFenster = New StatusFenster 
08.
    m_status = MboStatusfensterNeu("Alte Daten löschen", "1/15: ", 100) 
09.
    ... 
10.
  End Sub 
11.
 
12.
  Public Function MboStatusfensterNeu(q As String, switch As String, fortschritt As Double) As String 
13.
    ... 
14.
    If mbo_StatusFenster.Visible = False Then mbo_StatusFenster.Show 
15.
    ... 
16.
  End Sub 
17.
End Class 
Die Sub WordImport ruft die Funktion MBoStatusfensterNeu auf, die wiederum ein Formular startet, das sich in der Klasse StatusFenster befindet. Die Klasse mit dem Status-Fenster ist ein Standard-Formular.
01.
Public Partial Class StatusFenster 
02.
  Public Sub New() 
03.
    Me.InitializeComponent() 
04.
  End Sub 
05.
  ... 
06.
End Class
Jetzt möchte ich in einer neuen Klasse (Code folgt im Anschluss) ebenfalls die Funktion MBoStatusfensterNeu aus der oben genannten Klasse Import aufrufen und somit das Formular starten.

01.
Public Partial Class Vergleich 
02.
  Dim mbo_StatusFenster As StatusFenster 
03.
  Dim m_Status as String 
04.
  Dim mbo_Import As New Import 
05.
  ... 
06.
 
07.
  Sub Tabellen_vergleichen 
08.
    mbo_StatusFenster = New StatusFenster 
09.
    m_status = mbo_Import.MboStatusfensterNeu("Alte Daten löschen", "1/15: ", 100) 
10.
    ... 
11.
  End Sub 
12.
End Class
Dabe erhalte ich jedoch die Fehlermeldung, dass der Verweis nicht auf eine Objektinstanz gelegt wurde. Irgendwie wird die Klasse StatusFenster nicht korrekt erkannt, obwohl der Code ja identisch zur ersten Klasse ist. Was mache ich falsch?


Vielen Dank,
M. Born
Bitte warten ..
Mitglied: colinardo
04.06.2014 um 15:35 Uhr
setze mal einen Breakpoint und checke an welcher Stelle der Debugger stehen bleibt.
Bitte warten ..
Mitglied: MarcoBorn
04.06.2014 um 15:46 Uhr
Das Problem tritt auf, wenn im StatusFenster die übergebenen Parameter zugewiesen werden sollen. Hier erhalte ich folgende Fehlermeldung:
01.
Der Objektverweis wurde nicht auch eine Objektinstanz festgelegt.  
02.
bei FKGenDNA.Importer.MboStatusfensterNeu(String q, String switch, Double fortschritt).
Der Fehler tritt in der Klasse Import in folgender Zeile auf:
01.
mbo_StatusFenster.label1.Text = "Schritt " & switch & q
Wenn ich in der Zeile davor mir per MsgBox die Werte von switsch und q ausgeben lasse, dann geht das ohne Probleme und sie enthalten auch Strings. Ich übergebe sie ja auch in genau denselben Format wie wenn ich die Funktion aus der Klasse Import heraus aufrufe. Kann es sein, dass der Aufruf des Formulars anders erfolgen muss? Ist ggf. die Initialisierung der Formular-Klasse aus der Klasse Vergleich heraus unterschiedlich?
Bitte warten ..
Mitglied: colinardo
LÖSUNG 04.06.2014, aktualisiert um 16:08 Uhr
Alles klar, du erzeugst das Fenster-Objekt nur in der Prozedur WordImport() die du natürlich vor oder im Aufruf von MboStatusfensterNeu() aufrufen musst damit der Dialog überhaupt erzeugt wird, denn ansonsten ist mbo_StatusFenster leer, und somit trifft die Fehlermeldung den Nagel auf den Kopf !

Alternativ musst du das Fenster schon beim initialisieren der Klasse Import erzeugen damit es in allen Prozeduren in der Klasse zur Verfügung steht.
Bitte warten ..
Mitglied: MarcoBorn
04.06.2014 um 16:08 Uhr
Das war es, wonach ich gesucht habe. Ich habe den Code wie folgt geändert und jetzt läuft es:
01.
Public Partial Class Vergleich  
02.
  Dim mbo_StatusFenster As New StatusFenster 
03.
 ...
Manchmal braucht man einfach nur einen kleinen Hinweis und es geht. Vielen Dank für Deine Hilfe...
Bitte warten ..
Ähnliche Inhalte
JavaScript
JQuery, neue Klasse an vorhandene Klasse hängen.
gelöst Frage von d4shoerncheNJavaScript4 Kommentare

Guten Tag, ich erstelle gerade eine neue Webpräsenz für unseren Verein und setze dort Joomla ein. In Joomla bekommt ...

C und C++
CoMarshalInterface Klasse nicht registriert
Frage von runner-ralfC und C++2 Kommentare

Hallo alle zusammen, Ich habe ein Programm das beim Starten folgenden Fehler ausspuckt. Schwerwiegender interner Fehler: CoMarshalInterface Klasse nicht ...

Vmware
Erreichbarkeit von VMs untereinander
Frage von Tealk144Vmware5 Kommentare

Hallo zusammen, ich habe mir aus test zwecken 2 Win7 und eine Win2k12 Maschine aufgesetzt, alle 3 befinden sich ...

Microsoft Office
Einträge untereinander Auflisten
gelöst Frage von batchnewbieMicrosoft Office8 Kommentare

Hallo, wie bekomme ich die Einträge in der rechten Tabelle untereinander und nicht wie jetzt so verstreut? Siehe Bild ...

Neue Wissensbeiträge
Erkennung und -Abwehr

Sicherheitslücke Spectre und Meltdown: Status prüfen

Anleitung von Frank vor 4 StundenErkennung und -Abwehr1 Kommentar

Nach all den Updates der letzten Woche sollte man unbedingt auch den Status prüfen, ob die Sicherheitslücke Spectre und ...

Microsoft Office

Office 2010 Starter erneut auf einer frischen Windows-Version installieren

Tipp von Lochkartenstanzer vor 1 TagMicrosoft Office9 Kommentare

Moin, vor ein paar Tagen schlug bei mir ein Kunde auf, der sein Widnows 7 geschrottet und es inklusive ...

Datenbanken

Upgrade MongoDB 3.4 auf 3.6

Erfahrungsbericht von Frank vor 1 TagDatenbanken

Seit kurzem gibt es das 3.6 Update für die MongoDB: Sicherheit, das Sortieren, Aggregation und auch die Performance wurde ...

SAN, NAS, DAS

Backdoor Zugang und Upload-Bug in vielen Western Digital MyCloud Geräten

Information von Frank vor 1 TagSAN, NAS, DAS2 Kommentare

James Bercegay von der Firma Gulftech hat die Fehler an Western Digital gemeldet und das Unternehmen stellt bereits ein ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Drucker und Scanner
Gesucht DIN A3 Drucker
Frage von NebellichtDrucker und Scanner15 Kommentare

Hallo, ich möchte einen neuen DIN A3 Drucker kaufen. Um ab und zu, ca. 1 mal die Woche Farbausdrucke ...

iOS
Einladung vom iphone kalender
Frage von jensgebkeniOS15 Kommentare

Hallo Gemeinschaft, folgendes Problem - immer wenn ich von meinem Iphone einen Termin einztrage und diesem Termin Teilnehmer zuweise, ...

Windows Netzwerk
Drucker isolieren in Windows Domäne
gelöst Frage von lcer00Windows Netzwerk14 Kommentare

Hallo zusammen, habe eine Windows-AD (2012R2) in der es einen Druckerserver gibt. Mittlerweile verliere ich das Vertrauen in die ...