Laden...

Forenbeiträge von Syrinx Ingesamt 95 Beiträge

09.03.2007 - 12:01 Uhr

hiho,

@Borg, ja das habe ich ausprobiert, aber danach hats gar nimmer geklappt, dass die App startet 🙁

Hab da auch noch was gefunden:

ManifestInjection

Mal auf diese Weise ein bissl herumprobieren...

greetz
Syrinx

09.03.2007 - 10:12 Uhr

Hi Forum,

ich habe ein Problem mit den FileDialogen.
Ich habe bereits herausgefunden, dass dies ein BUG im Framework 1.0/1.1 ist.

Ich habe in meiner Anwendung einen SaveFileDialog und einen FolderBrowserDialog.

Sobald ich bei diesen die Methode ShowDialog aufrufe und in diesen Dialogen einen "Neuen Ordner" anlgege, dann springt er mir mit einer SEHException raus.
MSDN2 - SEHException

Das Problem ist, dass dieser Fehler NICHT abgefangen werden kann. Ich habe um so ziemlich alles was mit diesen Dialogen zu tun hat einen try-catch gemacht, aber der Fehler ist nicht abfangbar (vielleicht habe ich auch was falsch gemacht)

Mit der Meldung:

"Eine externe Komponenten hat eine Ausnahme verursacht"...

Die Lösung des Problems ist:


Application.EnableVisualStyles(); //<-- auskommentieren
Application.DoEvents();

Dann tritt dieses Phänomen nicht mehr auf.
Allerdings möchte ich auf die visuellen Stile in meiner Anwendung nicht verzichten (wenns nicht anders geht muss es sein 😦)

komischerweise tritt das nur bei 2 Dialogen auf. Bei andern in der Anwendung funktioniert das Neuanlegen eines Ordners über den Dialog problemlos. (Vielleicht liegt es bei dem Formular auch an der Vererbung ??)

Dazu habe ich auch was auf Microsoft KB 897298 gefunden, aber die reden halt von VB und irgendwelchen Manifestdateien, die in die Application hinzugefügt werden sollen.
Da die Anleitung von denen nicht wirklich brauchbar ist bin ich da auch noch nicht wirklich weiter gekommen.

Jetzt wollte ich mal nachfragen, ob schon jemand ein ähnliches Problem hatte und vielleicht hierauf eine Lösung gefunden hat. Ich bin seit ein paar Tagen dabei mir irgendwas zu überlegen wie man das umgehen kann.

Über jede auch noch so kleine Anregung bin ich wirklich dankbar, da mir gleich meine Nerven flöten gehen X(

mfg
Syrinx

24.01.2007 - 08:34 Uhr

Hi,

hier im Forum gibts dazu eh schon einen Beitrag 🙂
-> StolenIcon

hoffe das hilft weiter 🙂

greetz
Syrinx

23.11.2006 - 13:12 Uhr

Hi Superbenny,

die Forumssuche hat folgenden Link zu Tage gefördert:

Unwandlung von Dezimalzahlen in Hex oder Binär

hoffe das hilft dir weiter 😉

greetz
Syrinx

20.11.2006 - 12:06 Uhr

tach,

jo iss binär serialisert.

Mist, das dachte ich mir schon fast 🙁

20.11.2006 - 11:57 Uhr

Hallo community,

ich habe ein Problem mit meiner Serialisierung.

Ich habe mehrere bereits serialisierte Dateien (die wichtige Informationen enthalten).
Desweiteren habe ich eine Klasse, die ein Attribut dieser serialisierten Dateien ist. Diese Klasse, bzw. der Namensraum wurde geändert. Jetzt kommt allerdings immer die Fehlermeldung:


Typ für Member gdpduExpCommon.Slicing.ExportSliceDetail, gdpduExpCommon, Version=1.0.2511.20014, Culture=neutral, PublicKeyToken=null wurde nicht aufgelöst.

woran das liegt weiß ich.

Das Problem ist, ich kann diese Dateien nun nicht wieder deserialisieren X(

Gibt es da eine Möglichkeit in den bereits serialisierten Dateien den gespeicherten Namensraum abzuändern, womit ich diese Dateien dann wieder deserialisieren kann??

Es wäre wirklich super, wenn da jemand was weiß, wie man das machen kann, oder ob es überhaupt möglich ist den Namensraum in einer serialiserierten Datei zu ändern...

greetz Syrinx

15.11.2006 - 14:48 Uhr

Hallo HalloWelt,

ich muss mich da nils anschließen (außer ich habe was verpasst)

du kannst kein Derivat in ein Objekt der Basisklasse umwandeln (und wenn doch, dann habe ich in OOP was verpasst 😄)

es geht nur andersrum, dass du einem Objekt der Basisklasse eine Objekt der Unterklasse zuweist.

Es tut ja die Basisklasse nix von der Existenz der Derivate wissen tun 🙂...
Andersrum sieht es ja anders aus... das Derivat weiß ja von wem es erbt... (ganz grob ausgedrückt)
[da ja eine abgeleitete Klasse irgendwas neu macht, neu implementiert, überschreibt, erweitert wird... tut sie das nicht iss sie umsonst 8)]

greetz Syrinx

15.11.2006 - 13:51 Uhr

Original von HalloWelt

Nun möchte ich ein bestehendes TreeView-Objekt dem base-Objekt eines ExtTreeView-Objektes zuweisen. Dies funktioniert jedoch weder über eine Typ-Konvertierung, noch mittels Übergabe des TreeView-Objektes an den Konstruktor und direkter Zuweisung des base-Objektes.

kannst du das mal ein bissl genauer beschreiben?? Ich habe das so ned ganz verstanden 🤔
Ich weiß nämlich ned wirklich was du wann wie konvertieren willst... der Code für die Zuweisung wäre auch ned schlecht, sowie vlt. eine Fehlermeldung die auftritt...

greetz Syrinx

13.11.2006 - 14:21 Uhr

Hi DasShrike,

du bekommst ja von dem dirEntry.blabla
auch ein byte[] zurück...

da die Zuweisung zu deiner TextBox aber einen String beinhalten sollte, solltest du dir vielleicht überlegen das byte[] wieder lesbar zu machen... ergo in einen String umzuwandeln

Allerdings nicht über ToString(), da das einfach nur System.Byte[] zurückgeben wird 🙂 Es gibt genügend Möglichkeiten ein Byte[] in einen String zu konvertieren...
Aber da solltest dann schon selber draufkommen 😉

Ich hoffe, ich konnte dir weiterhelfen 😉

greetz
Syrinx

09.11.2006 - 17:39 Uhr

Hi LukeGee,

Tutorials gibt es für diesen Bereich genügend, man muss nur wissen wo. Dabei hilft einem meistens auch der nette Mr. Google 😁

Die Forumssuche bringt aber auch folgendes zu Tage:
Zugriff auf Access

funktioniert mit OleDb und Odbc genauso... sind nur andere Treiber, aber das steht an anderer Stelle 🙂

Aber wenn du Fragen bzgl. Datentzugriff hast, würde ich mir ernsthaft überlegen ein Buch über ADO.Net zu kaufen... bzw. die MSDN zu durchforsten, ob da was drinnenstehen tut... 🤔 😁

mfg
Syrinx

09.11.2006 - 17:35 Uhr

hi,

vielleicht hilft dir das hier weiter:
Controls von Thread aktualisieren lassen (Invoke-/TreeView-Beispiel)

mfg
Syrinx

09.11.2006 - 14:46 Uhr

Hi Kuehner,

eine Möglichkeit ist über WMI...
Forumssuche nach WMI dürfte ein Ergebnis bringen 🙂

greetz Syrinx

09.11.2006 - 14:27 Uhr

hi,

also die einfachste Variante wäre einfach die Text-Eigenschaft der TextBox zu setzen, oder nicht??? 🤔

Du hast ja beim DataGridView auch eine CurrentCellChangedEvent (gibbet auch soweit ich jetzt weis auch für die Zeile)

in dem dann einfach die Text-Property setzen... 8)

oder habe ich das falsch verstanden 8o

greetz
Syrinx

07.11.2006 - 08:24 Uhr

Hallo PeterK,

bei C# brauchst du keinen Parameter übergeben, denn die Wertezuweisung (durch den set Accessor) steht dann automatisch in der Variablen value...

Du brauchst keinen Parameter wie in VB... 😁

greetz
Syrinx

25.10.2006 - 14:05 Uhr

Hi,

da gibbet mehrere Möglichkeiten:

  1. Integer.TryParse(blabla) --> siehe MSDN für Details
  2. Integer.Parse --> und Exception abfangen, wenn eine auftritt iss es keine Zahl
  3. ab 2.0 gibbet eine MaskedTextBox, in der man auch festlegen kann, was da eingegeben werden darf.
  4. eigenes Steuerelement schreiben, welches von TextBox abgeleitet ist und nur Zahlen zulässt (wo wieder das Parse und TryParse zum Tragen kommt.)
  5. RegEx

Ich hoffe, das hilft dir ein bissl weiter 8)

greetz
Syrinx

20.10.2006 - 16:00 Uhr

Original von hohes c
property type 'listen_verwalten.FilmItem' is less accessible than property 'listen_verwalten.EditDialog.ListItem'

Was genau da falsch ist, sagt die Fehlermeldung eigentlich schon aus...

sollte man vielleicht dazu sagen, dass wenn nix vor dem class steht die Klasse automatisch den Zugriffstyp PRIVAT hat...


class Class1{ //privat
//...
}
public class Class2{ //public 

}

dürfte das Problem eigentlich lösen 🙂

greetz Syrinx

19.10.2006 - 15:45 Uhr

ich bis vor kurzem auch ned 😁

19.10.2006 - 08:42 Uhr

hi,

jo das wird wohl oder übel mit WMI passieren müssen...
Bin ich auch grade dran, und dabei über das gestoßen

müsste eigentlich über die Win32_LogicalDisk funktionieren...

Bevor du dich aber über den Code machst, würde ich vorher mit dem WMI Code Creator auprobieren, wo die Infos am ehesten drinnenstehen und welche Properties versorgt sind und welche ned...

greetz Syrinx

18.10.2006 - 14:06 Uhr

so nochmal ich,

kann man mit der Win32_DiskDrive nicht auf S-ATA Platten zugreifen und deren Infos auslesen??? Daran lags nämlich... Die anderen Computer haben alle IDE Platten und meiner hat eine S-ATA Platte (ST3160828AS)...

und bei den andern klappts, aber bei meinem ned 🙁

gibts da irgendwie eine Klasse um auf die zuzugreifen???

Außerdem steht dann in der Win32_DiskDrive der falsche InterfaceType, und zwar IDE obwohls ned S-ATA Platte iss... ?(

Weiß da wer was??

greetz Syrinx

18.10.2006 - 13:33 Uhr

so,

noch was aufgefallen.

Ich habe das gleiche Programm nun auf 2 unterschiedlichen Rechnern ausprobiert.
Bei dem einen liest es die SerialNumber aus (Laptop mit Framework 1.1)

und bei dem andern nicht (FW 1.1 und FW 2.0)... welcher auch der Entwicklungsrechner iss...

ARGH ich verzweifle gleich ... 🤔 ?( X(

/edit habs nun auf mehreren Rechnern ausprobiert, und nur bei zwei wurde die SerialNumber nicht ausgelesen. (gleiche Festplatte)

Kann das sein, dass manche Festplatten KEINE Seriennummer haben??? 0.o 🤔

18.10.2006 - 13:06 Uhr

Hi belial,

die SerialNumber ist aber in der Win32_PhysicalMedia enthalten, da steht auch nix über nicht vorhanden, oder sie haben vergessen es hinzuschreiben.

Das was du meinst ist die Win32_DiskDrive, da iss sie nicht enhalten. 🙂

ja schon, aber ich habe einfach ein Problem, dass man bei der GetVolumeinformation(blabla) einen Laufwerksbuchstaben braucht und die stehen wiederum nur in der Win32_LogicalDisk. Da habe ich aber keinen Querverweis oder übereinstimmende Properties, mit dem man das auswerten und abfragen kann... damned

Muss ich mir doch was anderes einfallen lassen 🙁

18.10.2006 - 11:27 Uhr

Hi forum,

nachdem ich mich nun knapp 1 Stunde mit der Suche beschäftigt habe und einiges über WMI gefunden habe, aber nix was mir weiterhilft, habe ich mich doch entschieden mein Problem zu posten. 8)

Aufgabe:
Ich möchte die Seriennummer der Festplatte auslesen.

Ich verwende teilweise den Code von codeproject: SerialNumber

der erste Teil klappt auch ganz gut. (Win32_DiskDrive)
Model und InterfaceType gibt er mir zurück.

nur beim zweiten Teil haperts:

      
searcher = new
    ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
   
   int i = 0;
   foreach(ManagementObject wmi_HD in searcher.Get())
   {
    // get the hard drive from collection
    // using index
    HardDrive hd = (HardDrive)hdCollection[i];

    // get the hardware serial no.
    if (wmi_HD["SerialNumber"] == null) // iss immer NULL
     hd.SerialNo = "None"; 
    else
     hd.SerialNo = wmi_HD["SerialNumber"].ToString();
    
    ++i;
   }

Die Seriennummer wird nicht ausgelesen. Dann habe ich mich mal umgeschaut und bei M$ den WMI Code Creator gefunden.

Da gibts die Klasse mit allen schönen Properties. Nur die einzige Property, die gefüllt ist, ist die DeviceID.

unter DiskDrive kann man die nicht ansprechen.

Da jede Festplatte ja eine Seriennummer hat, was auch folgender Code beweist:


//[...]
		[DllImport("kernel32.dll")]
		private static extern long GetVolumeInformation(
			string PathName, 
			StringBuilder VolumeNameBuffer, 
			UInt32 VolumeNameSize, 
			ref UInt32 VolumeSerialNumber, 
			ref UInt32 MaximumComponentLength, 
			ref UInt32 FileSystemFlags, 
			StringBuilder FileSystemNameBuffer, 
			UInt32 FileSystemNameSize);
//[...]
private string GetVolumeSerial(string strDriveLetter) {
                uint serNum = 0;
	uint maxCompLen = 0;
	StringBuilder VolLabel = new StringBuilder(256); // Label
	UInt32 VolFlags = new UInt32();
	StringBuilder FSName = new StringBuilder(256); // File System Name
	strDriveLetter+=":\\"; // fix up the passed-in drive letter for the API call
	long Ret = GetVolumeInformation(strDriveLetter, VolLabel, (UInt32)VolLabel.Capacity, ref serNum, ref maxCompLen, ref VolFlags, FSName, (UInt32)FSName.Capacity);
	return Convert.ToString(serNum);
}


Nun bin ich ein bissl verwirrt. Kann es sein, dass man noch was spezielles angeben muss, um diese WMI Klassen zu verwenden??
Warum kommt bei der einen was zurück und bei der anderen nicht??

Vielleicht weiß ja wer, was da falsch läuft...

greetz
Syrinx

16.10.2006 - 10:06 Uhr

hi talla,

das habe ich schon versucht, allerdings steht in dieser Eigenschaft nix drinnen. Da habe ich es mal über die WindowsApi versucht, die allerdings auch nix zurückgibt.
Bzw. wir jeweils "" zurückgegeben.
(und ja die Texteigenschaften sind gepflegt!!!)

--> dabei iss mir dann dieses Problem aufgefallen 🙂

greetz
Syrinx

16.10.2006 - 09:54 Uhr

Hi Forum,

da die Suche nix ergeben hat (oder ich habe nach dem falschen gesucht 😉) poste ich einfach mal mein Problem.

Ich habe eine Hauptform, die ein MDIChild besitzt.
folgender Code (allerdings übern Designer) wird festgelegt:

this.StartPosition = FormStartPosition.CenterScreen

nun habe ich mir eine Klasse geschrieben, die die ganzen Handles der aufgerufenen Formulare beinhaltet, sowie Informationen über die Forms.
Hintergrund ist belanglos 🙂.

der Konstruktor der Klasse sieht folgendermaßen aus:

		
public WizardState(frmBase instance, bool isOpen, bool isBase) {
	_instanceOfClass = instance;
//	this._handle = instance.Handle;
	this._className = instance.GetType().Name;
	this._caption = GetText(/*this._handle*/IntPtr.Zero);
	this._isOpen = isOpen;
	this._isBaseWindow = isBase;
}


//	this._handle = instance.Handle; // --> Fehler

bei der obrigen Zeile wird in meinem Hauptform (welches auch ein Objekt dieser Klasse ist) --> die einfach in einer Hashtable gespeichert werden, mit dem Instanznamen der Klasse und einem Objekt der WizardState Klasse) die Eigenschaft StartPosition resetet und das Formular startet ganz links oben...

Kann das mit dem Abrufen des Fensterhandles zu tun haben, denn wenn ich diese Zeile auskommentiere, dann klappts ganz normal.

Weiß vielleicht wer, woran das liegen könnte??
Bin um jeden Rat dankbar, denn das treibt mich nochmal in den Wahnsinn 🙁

mfg
Syrinx

12.10.2006 - 14:41 Uhr

jo habe ich mir auch überlegt...

Es ist aber eher so eine Art Freischaltung...
und wenn die Festplatte abraucht, dann muss er eh neu installieren und dann iss auch eine neue Freischaltung erforderlich. Registriert und lizenziert ist es zu dem Zeitpunkt ja bereits... 🙂

Allerdings kommt dann das Problem mit der geänderten Seriennummer, wie mir grade auffällt mist... Aber wofür gibts denn in der modernen Welt des Internets noch Telefone 😁

Tja, werde ich wohl doch auf ProzessorID und / oder Festplatte prüfen, vielleicht in einem Array... 0.o mal guggn 🙂

Aber danke für den Tipp...

12.10.2006 - 10:15 Uhr

hi cx°,

das mit der Seriennummer der Festplatte ist ein guter Ansatz.
Danke ^^

greetz
Syrinx

11.10.2006 - 15:31 Uhr

Hi,

eigentlich kannste alles über den Designer machen, was die Steuerelemente betrifft. Ist für den Anfang sicher ned schlecht. Dann kannst ja mal die ganzen Dateien durchschauen und sehen wo er was hinschreibt.

EventHandler, Steuerelementdefinitionen usw.

Falls du die Events ned gefunden hast, im Eigenschaftenfenster iss so ein kleiner Blitz, da sind die ganzen Events drinnen, ein Doppelklick drauf erstellt das Ding + Handler 🙂 das hat zumindest mir am Anfang geholfen mit der IDE zurechtzukommen 😁

greetz
Syrinx

11.10.2006 - 15:00 Uhr

habe ich auch schon überlegt, aber die kann man ja auf einfachste Weise fälschen 😉 könnte aber miteinbezogen werden ...

ich behalts mal im Hinterkopf, thx

11.10.2006 - 14:50 Uhr

Hallo Forum,

ich habe mich gleich dumm und dämlich gesucht, daher stelle ich nun doch einen Thread hier rein 🙂.

Hat sowas schon mal wer gemacht, bzw. gibts irgendwo etwas was man als Vorgehensweise heranziehen kann??

Da ich momentan grade an einer Softwarelizenzierung arbeite, die dann über einen WebService freigeschaltet werden soll (bzw. registriert wird) habe ich mir gedacht, dass es sicher nicht schlecht wäre einen Hardwarekey des Rechners mitzusenden, um eine gewisse Eindeutigkeit zu haben.

Steht der schon irgendwo oder soll man den selber erstellen??

Ich habe mal ein bissl in die Registry geschaut, aber da wird einem ja schlecht, was da alles für die Hardware drinnensteht. Und man kann sich ja auch ned nur was bestimmtes rausholen, da ja jeder Rechner andere Hardware hat.

Ich bin echt gleich am Verzweifeln und um jeden Vorschlag, seis auch nur ein noch so kleiner dankbar. 🙂

greetz Syrinx

02.10.2006 - 15:12 Uhr

hi,

die Forumssuche ergibt folgenden Treffer:

INIReader

😁

greetz
Syrinx

02.10.2006 - 15:08 Uhr

tach,

na ja das mit einer Bildschirmseite halte ich für ein bissl übertrieben.
Es gibt durchaus eine Daseinsberechtigung für längere Switch-Case oder if-Abfragen.

Ich z.B. habe eine Klasse, die eine Ressourcendatei abarbeitet --> Meldungstexte.
Darin enthalten sind locker 40 Case Blöcke.

Ich finde das ist der Geschmack des einzelnen, wie übersichtlich was ist.

Und diese 40 Case-Blöcke sind in keinster Weist unübersichtlich, wenn man alles schön gliedert und mit Kommentaren versieht. 🙂

Aber inwiefern das jemand macht ist einem selbst überlassen...

edit: was ich noch vergessen habe:
Auch bei Funktionen macht es nicht immer Sinn diese zu zerteilen, dass ich da tausende Aufrufe von anderen Methoden habe. --> dadurch entsteht mehr Verwirrung, als Nutzen. Ich habe durchaus einige Methoden, die sich über 500 - 1000 Codezeilen erstrecken, die aber nicht wirklich in andere Methoden ausgelagert werden sollen / können.

greetz
Syrinx

29.09.2006 - 10:46 Uhr

Hi herbivore,

jetzt ist es klarer.
Danke für die Antwort 🙂

greetz Syrinx

29.09.2006 - 10:36 Uhr

Hi Forum,

Ich habe im Forum gesucht und folgendes gefunden.

Statische Member vererben

Funktionen in Interfaces generieren

Interfaces explizit implementieren

so nun meine Frage, da immer nur darauf verwiesen wurde, bzw. gesagt wurde:

"Das geht nicht" oder
"ist verboten" .
Soweit bin ich selber schon.

Warum sind keine statischen Member in Interfaces erlaubt?? Nicht einfach nur sagen, iss so, sondern vielleicht kann auch jemand sagen, warum man das nicht darf.

Genauso warum man keine statischen Methoden als abstrakt definieren kann.

Wäre glaube ich mehreren geholfen mal den Grund dafür zu wissen.

greetz Syrinx

19.09.2006 - 15:38 Uhr

Hi,

ich binde die DLL ganz normal über die Verweise ein.

Wie genau meinst du das mit den AppDomains, hab damit noch ned gearbeitet??
?( oder ich stehe grade aufm Schlauch (kann auch sein)

19.09.2006 - 12:59 Uhr

Hi Forum,

ich habe ein Problem mit einer externen DLL.

(falls sie wer kennt --> hasp_net_windows.dll)

Es kommt sporadisch vor, dass einfach eine AccessViolationException auftaucht.

Die genaue Fehlermeldung:

System.AccessViolationException wurde nicht behandelt.
Message="Es wurde versucht, im geschützten Speicher zu lesen oder zu schreiben. Dies ist häufig ein Hinweis darauf, dass anderer Speicher beschädigt ist."
Source="hasp_net_windows"
StackTrace:
bei free(Void* )
bei Aladdin.HASP.Hasp.Dispose(Boolean disposing)
bei Aladdin.HASP.Hasp.Finalize()

Der Fehler tritt (wenn er auftritt) beim Schließen meiner Applikation auf

Nun meine Frage:

Gibts irgendwie eine Möglichkeit diese abzufangen??
Ich habe bereits in meiner Program.cs einen Try-Catch um den Applikationsaufruf gebastelt, aber er springt mir trotzdem hin und wieder (was auch das ärgerliche ist, dass es nicht immer autritt) in diese Exception.

Bzw. kann man das irgendwie manuell ansteuern???

Ich bin über jede noch so kleine Anregung dankbar.

Gruß Syrinx

19.09.2006 - 08:42 Uhr

Hi,

normalerweise kannst das im Closing Event machen


void Form1_FormClosing(object sender, FormClosingEventArgs e){
  this.Hide();
  e.Cancel = true; // bricht das Schließen ab
}


Vielleicht hats dir ja geholfen 🙂

greetz Syrinx

15.09.2006 - 14:57 Uhr

Tach,

jo danke, dann muss ich wohl oder übel ein bissl was umstellen.

Das ist das Problem, wenn aus einem kleinen Tool eine größere Anwendung werden soll ... 🙂 Da kommt man dann mit der Umstrukturierung immer an gewisse Punkte wo man alles übern Haufen werfen kann ...

greetz
Syrinx

15.09.2006 - 13:20 Uhr

Hi,

Stichwort Mutex

15.09.2006 - 12:24 Uhr

Hi,

ging aber schnell 🙂

Fehler iss folgender:

Der Typ "dabLicense.DabData" ist in einer nicht referenzierten Assembly definiert. Fügen Sie einen Verweis auf die Assembly "dabLicense, Version=1.0.2449.17652, Culture=neutral, PublicKeyToken=null" hinzu.

Diese Fehlermeldung ist in der GUI.
aus der GUI referenzier ich aber nicht die DLL, die die Daten hält, dafür ist der Manager da und auf die DLL wird verwiesen. Aber die Durchreichung klappt ned.

15.09.2006 - 12:14 Uhr

Hi community,

Ich habe ein Problem mit dem Aufruf einer Methode bzw. einer Property einer DLL.

Folgende Situation:

ich habe eine Anwendung mit 3 Layern:

LicDL --> DataLayer
LicBL --> BusinessLayer
LicGUI --> GUI

von LicBL verweise ich auf LicDL und von der GUI auf LicBL.
Jetzt habe ich in der LicBL noch einen Verweis auf eine DLL drinnen.
nennen wir sie extDLL.

im LicBL gibts dann noch einen LicManager mit einer Property von einem Typ in der extDLL.

quasi folgendermaßen:


///
/// Das ist in der LicBL
///
using extDLL;
public class LicManager{

private ILic _lic;

private LicManager(){
  _lic = LicFactory.GetLic(/*...*/); // erzeugt das Objekt
}

public LicManager GetInstance(){
  //Singleton
}

public Data Data{
get{return this._lic.Data;}
}
}


///
/// u.a. extDLL
///

public class Data{

/*ein paar Member*/
int zahl;

public Int32 Zahl{
 get{return this.zahl;}
}

}


///
///GUI
///

using LicBL;

public class frmIrgendwas : Form{

 LicManager _lm = LicManager.GetInstance(); 

 void MachWas(){
   Console.WriteLine(_lm.Data.Zahl.ToString()); // Hier krachts, weil er nicht auf Zahl zugreifen kann.
 }
}

Muss man da bei den DLL's noch was besonderes angeben, oder wie klappt das??
Normalerweise würde es doch funktionieren, oder irre ich mich da.

Sind da welche Attribute dafür verantwortlich.

Ich bin echt für jede Hilfe dankbar, da ich echt nimma weiter weiß.
Wenns nicht klappen sollte, dann muss ich wohl ohne BL auskommen o_O.

Danke schon mal im Vorraus

greetz Syrinx

08.09.2006 - 13:27 Uhr

Tach,

die Fehlermeldung lässt darauf schließen, dass irgendwo die () vergessen wurden 😁

07.09.2006 - 16:44 Uhr

Hi zero,

es mag teilweise schon stimmen was du da schreibst. Allerdings hat herbivore auch Recht.

Man kann das aber auch nicht so pauschalisieren, sondern muss das eher im Einzelfall betrachten, wie es der einzelne handhabt und wie er es besser lesen kann.

Sicher ist es am Anfang leichter == true / false zu schreiben, aber im Laufe der Jahre wird man sicher für eine der beiden Varianten entscheiden.

Und zu deinem Beispiel muss ich auch was sagen:

Wann kommen wirklich so komplexe Formulierungen vor???

Weil wenn du so programmierst, dann steht das in Widerspruch mit dem von dir Bschriebenem.

Ich würde das dann halt einfach auf mehrere If - Else Statements aufteilen, dann haste auch wieder Lesbarkeit erreicht 😁 und da kannste dann auch wieder die kurze Schreibweise reinklatschen ...

so far
Syrinx

07.09.2006 - 16:31 Uhr

Hi handycommander,

aus der MSDN:

  
using System;  
using System.Globalization;   
  
public class MainClass {   
   public static void Main(string[] args)  {  
       DateTime dt = DateTime.Now;  
       String[] format = {  
           "d", "D",  
           "f", "F",  
           "g", "G",  
           "m",  
           "r",  
           "s",  
           "t", "T",  
           "u", "U",  
           "y",  
           "dddd, MMMM dd yyyy",  
           "ddd, MMM d \"'\"yy",  
           "dddd, MMMM dd",  
           "M/yy",  
           "dd-MM-yy",  
       };  
       String date;  
       for (int i = 0; i < format.Length; i++) {  
           date = dt.ToString(format[i], DateTimeFormatInfo.InvariantInfo);  
           Console.WriteLine(String.Concat(format[i], " :" , date));  
       }  
   
  /** Output.  
   *  
   * d :08/17/2000  
   * D :Thursday, August 17, 2000  
   * f :Thursday, August 17, 2000 16:32  
   * F :Thursday, August 17, 2000 16:32:32  
   * g :08/17/2000 16:32  
   * G :08/17/2000 16:32:32  
   * m :August 17  
   * r :Thu, 17 Aug 2000 23:32:32 GMT  
   * s :2000-08-17T16:32:32  
   * t :16:32  
   * T :16:32:32  
   * u :2000-08-17 23:32:32Z  
   * U :Thursday, August 17, 2000 23:32:32  
   * y :August, 2000  
   * dddd, MMMM dd yyyy :Thursday, August 17 2000  
   * ddd, MMM d "'"yy :Thu, Aug 17 '00  
   * dddd, MMMM dd :Thursday, August 17  
   * M/yy :8/00  
   * dd-MM-yy :17-08-00  
   */  
   }  
}  
  

//liefert dein Ergebnis
DateTime.Now.ToString("T");

07.09.2006 - 16:26 Uhr

Hi

unterm Framework gibts die Property

Form.ShowInTaskbar = false

Allerdings kann ich ned sagen, ob das unter CE genauso aussieht 🙂

greetz

07.09.2006 - 15:28 Uhr

Gute Erklärung zero, amüsant und nett 👍

07.09.2006 - 15:23 Uhr

Tach

Label.Refresh() aktualisiert die Label

analog kannst auch über die components Collection iterieren und den Text updaten, bzw. die Labels refreshen oder updaten 😁

06.09.2006 - 16:41 Uhr

Hallo burning snow,

sollte so aussehen:

delegates haben keinen Rückgabewert, sondern da wird das über die EventArgsKlasse gesteuert.
Einfach eine neue machen und das passt.


public delegate void MyEventHandler(object sender, EventArgs e);


class Baba{
//Member usw.
public event MyEventHandler MyEvent;

protected void OnMyEvent(object sender, EventArgs e){
 //Hier dann die Registrierung prüfen
 if(MyEvent != null)
    MyEvent(sender, e);
}
}

dann in einer Konsolen oder WinAnwendung musst halt noch im Konstruktor, oder wo du es halt haben willst auch noch den Handler machen


class Form1 {
 Baba b = new Baba();
 Form1(){
   b.MyEvent += new MyEventHandler(macheWasWennDasEventKommtMethode);
 }

 void macheWasWennDasEventKommtMethode(object sender, EventArgs e){
   //wenn das event kommt
 }
}



06.09.2006 - 16:34 Uhr

😁

06.09.2006 - 13:33 Uhr

aus der MSDN:

Das von dieser Methode erstellte FileStream-Objekt weist einen FileShare-Standardwert von None auf. Andere Prozesse oder anderer Code können erst auf die Datei zugreifen, wenn das ursprüngliche Dateihandle geschlossen wird.