| Autor |
Beitrag |
m.keller
      
Beiträge: 133
Win xp, Win 7
C# (VS 2008)
|
Verfasst: Mo 16.12.13 13:53
Hallo,
ich habe von einem Unternehmen eine fertige DLL Datei bekommen, für diese DLL Datei gibt es auch schon ein Fertiges Testprogramm.
nun muss ich diese Testprogramm auf unser Wünsche umschreiben.
Das Ganze Testprogramm ist mir Static Instanzen geschrieben.
Mein vorhaben ist gerade befehle und Meldungen aus diesen Instanzen in eine Textbox zu schreiben.
Da ich aber aus diesen bereichen die Textbox nicht beschreiben kann muss es doch eine andere Möglichkeit geben oder?
Hat einer eine Idee?
Vielen dank schon mal.
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Mo 16.12.13 14:01
 Entweder static oder Instanz. Eine Static Instanz ist irgendwie Paradox.
Static Code kann wie jeder Code Referenzen auf irgendwas benutzen also auch auf Textboxen.
Um dein Problem zu verstehen solltest du etwas deutlicher werden. Vielleicht hilft auch wenn du ein wenig Code zeigt das dein Problem verdeutlicht.
|
|
m.keller 
      
Beiträge: 133
Win xp, Win 7
C# (VS 2008)
|
Verfasst: Mo 16.12.13 14:11
oh, ich habe da mal wieder was durch einander gebracht.
denn Code will ich ungerne veröffentlichen, da es nicht um Private Programmierung geht.
hier ein kleines beispiel wie es eigentlich gedacht hatte.
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| private void print_log(string text) { textbox1.Text = text; }
public static void client_apiInit() { print_log("text"); } |
_________________ Der gesunde Menschenverstand ist nur eine Anhäufung von Vorurteilen, die man bis zum 18. Lebensjahr erworben hat. (Albert Einstein)
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Mo 16.12.13 14:16
Mach print_log static und die statische Klasse zu der print_log verpasst du eine Referenz auf die zu benutzende Form für die Log Ausgabe. Die müßtest du halt vor dem benutzen der statischen Methoden nur einmal zuweisen bzw. du läßt den statischen Code die Form selbst erzeugen und verwalten.
|
|
m.keller 
      
Beiträge: 133
Win xp, Win 7
C# (VS 2008)
|
Verfasst: Mo 16.12.13 14:40
Print_log static ok, verstehe ich ja noch.
bei Referenz hört es fast schon auf.
print_log ist in der gleichen Klasse vorhanden, kann ich mehrere Referenzen zuweisen?
Und wie soll ich die dann zuweisen?
Tut mir leid ich bin noch nicht all so lange in dem Tehma drin.
Das ist jetzt gerade etwas neuland für mich.
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Mo 16.12.13 15:23
| Zitat: | | print_log ist in der gleichen Klasse vorhanden, kann ich mehrere Referenzen zuweisen? |
Das macht keinen Sinn. Wenn du sagst es ist alles statisch geht die Anwendung davon aus das es sowas nur einmal gibt.
Vielleicht solltest du noch ein wenig mehr von dem rausrücken was du da hast damit wir das verstehen.
|
|
m.keller 
      
Beiträge: 133
Win xp, Win 7
C# (VS 2008)
|
Verfasst: Mo 16.12.13 16:48
ich versuche es zu erklären...
das Tool soll sich auf einem Server anmelden und Daten vergleichen und abhängig von diesen vergleichen, werden werte zurück gegeben.
Ursprung ist eine Consolenanwendung, alle von dem Testtool verwendeten Methoden sind static.
Über Console.Write() wurde das schreiben der werte und Infos im Testtool erledigt.
Dies soll nun in einer Formanwendung realisiert werden.
Um eine Übersicht zu erhalten und dem Benutzer an zu geben was das Tool gerade ausführ, soll dieses in eine Textbox geschrieben werden.
Die im Tool vorhandenen Methoden muss ich für mich nun anpassen und einige weitere Routinen erstellen.
|
|
Ralf Jansen
      
Beiträge: 4708
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: Mo 16.12.13 17:16
Du möchtest also einfach den Console.WriteLine Aufruf durch eine Anzeige auf einer Form ersetzen?
Dann vielleicht sowas?
Einfach alle Console.WriteLine() durch MeineLiebeClass.PrintLog() ersetzen und wenn das ansonsten immer noch eine Consolen Anwendung ist nicht vergessen vorher eine MessageQueue zu erzeugen per Application.Run.
C#-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23:
| public static class MeineLiebeClass { private static MeineLiebeForm form;
static MeineLiebeClass () { form = new MeineLiebeForm(); form.FormClosing += (sender, args) => { args.Cancel = true; form.Visible = false; }; }
static void form_FormClosed(object sender, System.Windows.Forms.FormClosedEventArgs e) { throw new NotImplementedException(); }
public static void PrintLog(string text) { if (!form.Visible) form.Visible = true;
form.textBox1.Text = text; } } |
|
|
m.keller 
      
Beiträge: 133
Win xp, Win 7
C# (VS 2008)
|
Verfasst: Di 17.12.13 08:28
Guten morgen,
also so ganz funktioniert das nicht.
Ich verstehe auch nicht warum ich jetzt dafür eine extra Klasse erstellen muss.
Jetzt meckert der debuger mich an das ich nicht auf die textbox wegen Sicherheitsebenen nicht zugreifen kann.
Entweder habe ich es immer noch nicht verständlich genug erklart (was ich vermute) oder ich stehe gerade extrem auf dem Schlauch(kommt vermutlich auch hinzu  )
|
|
m.keller 
      
Beiträge: 133
Win xp, Win 7
C# (VS 2008)
|
Verfasst: Di 17.12.13 10:35
So habe jetzt alle von
C#-Quelltext
in
C#-Quelltext
geändert.
Dan funktioniert es.
|
|