Laden...
S
Schakal myCSharp.de - Member
Fachinformatker FR Systemintegration VS-Villingen / Germany Dabei seit 16.11.2005 37 Beiträge
Benutzerbeschreibung
Die einzige Lösung aller IT-Probleme, ist die eleminierung des LAYER 8 Problems.

Forenbeiträge von Schakal Ingesamt 37 Beiträge

21.12.2008 - 19:44 Uhr

Danke,

also aus dem Linker raus und das Funzt?

krieg ich dann nicht Probleme mit Unmanaged-Interfaces/Klassen usw? oder werden die Typen in den RuntimeLibs polymorph behandet?

Also wenn das läuft, sollte das auch wesentlich performanter sein als über eineen Zwischenwrapper(native c Export) oder?

Dann funzt evtl ja auch ne Serialisierung...

Gibt leider keine Bibel für den Interop zwischen .NET und Win32 ala Petzold oder?

Oder kennt jemand nen richtig gutes online-Tutorial über Mixed Managed/Unmanaged c++ coding?

18.12.2008 - 10:21 Uhr

Einfach deine c/c++ dll mit /clr übersetzen und du kannst deine .Net Typen wie gewohnt verwenden.
=>
>

Danke, das 😉 ist aber anscheinend doch gar net so einfach wie man in der MSDN liest .... 😉 ...

Nach Doku der Schnittstelle muss ich Die mit /MT compilieren.
"/MT is not compatible with /clr";)

What the F**K... (/MT)

Wenn ich dann die einstellung ändere, bekomm ich ohne ende Fehler:) wie z.B:

"Error LNK2005: "public: __thiscall std::_Lockit::_Lockit(int)" (??0_Lockit@std@@QAE@H@Z) already defined in msvcprt.lib(MSVCP80.dll) libcpmt.lib"

" error LNK2005: ___xi_z already defined in MSVCRT.lib(cinitexe.obj) LIBCMT.lib "

"*** already definded in MCVCRT.lib(MSVCR80.dll)"

so einfaxh gehts wohl nicht;)...

______ UPDATE ______

hat sich erledigt Danke Jungs 😉, native C export und /clr sind für mich die perfomanteste Lösung...

Danke...

17.12.2008 - 12:58 Uhr

Hmm also scheint ja möglichkeiten zu geben, wie sieht es denn mit der Performance von c# und COM aus ?
ist das ne Möglichkeit oder machen die Ableitungen von XmlNode etc. Probleme?

17.12.2008 - 11:40 Uhr

Hi Jungs, und mal wieder Danke im Voraus;),

ich hab mal nen eigenen sehr Umfangreichen XML-Connector in C# geschrieben.

Jetzt muss ich allerdings in einer anderen CRM Software das damals von mir implementierte XML-Protokoll wiederverwenden. Diese kann jetzt aber nur native c/c++ MFC-Dlls als Plugin laden. Schon ok das Plugin zu schreiben,
aber ich muss doch irgendwie meine vielen eigenen XML-Wrapper klassen, die jew. von XmlNode oder XmlDoc... und so weiter abgeleitet sind, verwenden können.

???Scheiße!!!! Muss ich das alles mit nem c++ XMLProcessor neu schreiben????
Ich hab doch extra 2.0 genommen um für die Zukunft gewappnet zu sein.:(
Ich wollte das Protokoll doch an allen CRM Servern implementieren....
und jetzt können die anderen schon .Net und der Scheiß vom großen Neukunden NICHT!
...
...
...
Gibts nicht vieleicht doch ne Möglichkeit die .NET KLassen und Managed Types oder assemblys in c/c++ Win32/MFC Anwendungen zu verwenden? Geht Pinvoke nicht irgendwie anders herum;).
Hab bis jetzt nicht viel erfahrung mit c++ nur halt mit native c. Bin über C/PERL zu C# gelkommen;)
(in PERL kann man übrigens auch objektorientiert arbeiten:))

26.03.2008 - 01:43 Uhr

Theorie und Programmieren?
Erst die Ablaufpläne schmieren!
...
Denken, Stricheln, Konstruieren,
Denken, Stricheln, Faszinieren!
....
🤔und dann? 🤔
...
Denken, Tippen, Instanzieren,
Denken, Tippen, Kompilieren!
...
...
Die Exception kontrollieren,
Denken, Tippen, Ausrangieren...
...
...
Denken, Tippen, Kopf verlieren
. . .
. . .
. . .
Denken, Tippen, wegradieren!

19.03.2008 - 19:52 Uhr

Hi mal nen bissal was aus Erfahrung...

...
in der Netzwerk/Protokollanalyse(Sniffer, Ethereal, etc.)...
...
Du wirst es nicht schaffen Https-Daten oder Streams richtig zu lesen, ohne die kompletten Frames zu entschlüsseln...

Probier es lieber nicht... 🙄
das ist frustrierend...🙁 🙁 🙁
selbst wen man davon Ahnung hat...🙁

brauchst du auch nicht. 😉

Du bekommst aus dem Datenverkehr genug Informationen über die Client-Verbindung. Du musst dir ja nur die IP-Pakete anschauen, und die richtigen Bytes abfragen. Du kannst alle Passwörter im KLARTEXT sehen, die über Protokolle wie Telnet, SNMPv1, !!!!HTTP!!!, !!!!FTP!!! etc. gesended werden.
Und Du siehst auch ob die richtig sind!!!!!
Ich weis ja nicht wie groß euer Netzwerk ist, aber auf solche Sachen steht in diversen Rechenzentren die TODESSTRAFE 😉.

Solltet Ihr ein Netzwerk mit insgesamt mehr als 150 Rechnern haben, oder ein IT-Unternehmen(selbst ein kleines) sein, sprech dich vorher genau mit deinem Chefe und/oder am besten dem RZ-Betrieb ab.
Du musst da gewissen Geheimhaltungsverpflichtungen zustimmen, oder du kannst richtige Probleme bekommen(inklusiv fristloser).

ach ja und nochwas...

Das andere Problem ist, das du sobald du ein Program über den Promiscous-Mode(Sniffer) laufen läst durch die Technik des Ethernet nur die Frames von deinem Rechner hast(Switches). Du bräuchtest also einen Steinzeithub vor der Firewall !!!!!!!!!!Bitte nicht!!!!!!!!!!!!!!!
oder einen Mittel/Oberklasse CISCO/3COM der nen Monitor-Port hat. Sollte das allerdings der Fall sein, hast du alle Möglichkeiten.

...
...
🙂Wenn Ihr nen MS-ISA als Firewall einsetzt, hast du natürlich keine Probleme, dann könntest du nämlich einfach WebSpy einsetzen das Logging Konfigurieren und dich über die schönen Reports und Warnungen freuen...Warum das Rad neu erfinden?? solche Logging- und/oder Reporting-Tools bietet euch eigentlich jeder gute Router/Firewall-Hersteller an. Aber falls du einfach mal etwas ha.... willst...🙂
...
Kannst Du mit WinPcap einen wunderschönen Tag in Sachen stöbern die DICH wahrscheinlich absolut nichts angehen 😉. Du glaubst gar nicht wie oft ich schon Passwörter für E-Mail, !!!!!!!!!DATENBANKEN!!!!!!!, FTP und die !!!Eigene Home-Page!!! und sowas im Klartext gesehen habe.

...
genug gequaselt
...
Wie war das mit Network-Sniffern und Hackertools?
8) 8) 8) 8) 8) 8) 8) :evil: :evil: :evil: :evil: :evil: 8) 8) 8) 8) 8)

29.01.2008 - 08:39 Uhr

Hi,

habe mir genau die gleiche Frage auch mal gestellt, und kann Dir das Buch "Microsoft .NET Framework Programmierung" von der Microsoft Press wärmstens empfehlen.

Ist zwar nicht ganz billig aber deckt solche Internas Perfekt ab.
Vielleicht kannst du es Dir ja auch über Uni oder Kumpels leihen.

21.06.2007 - 10:29 Uhr

Hi Jungs,

mal wieder eine kleine Frage bezüglich eurer Erfahrungen:

Hat jemand schon einmal mit der Bibliothek Report.Net von SourceForge gearbeitet? Bin über den Schwichtenberg-Blog drauf gestoßen.
http://sourceforge.net/projects/report

Habe in der Vergangenheit eigentlich immer mit Crystal gearbeitet,
da ich nun aber privat(Freiberuflich) Report-Funktionen verwenden muss, und mir die Ausgabe eh als PDF vorschwebt wollte ich mal fragen welche GPL-Libs Ihr da empfehlen könnt oder ob Ihr Erfahrungen damit habt. Designer muss nicht in Visual Studio Express integriert sein. Mir würde eine HTML-Vorlage od. Ähnlich zum Design der Reports reichen.

Mal wieder danke im Voraus

16.11.2006 - 08:53 Uhr

So danke, hat sich erledigt....

Hmm sollte mir vieleicht doch mal ein weiterführenden Schinken über ADO zulegen.
Denn wenn ich nen DataAdapter benutze, brauche ich mir ja um die Datentypen und den Update-String gar keine Sorgen machen....

So das nächste mal gibts nicht so ne blöde Frage 😉

Happy Coding

15.11.2006 - 19:08 Uhr

Hi Jungs,
hab nen kleines Problem und hoffe jemand mußte mal etwas ähnliches lösen.
Also:
Ich schreibe gerad ein Programm um Zwei Datenbank Anwendungen zu Verknüpfen. Für das eine erstelle ich eine Import-Datei aus den Datenbanken des anderen.(Könnte auch direkt in die DB schreiben, aber so wird auch noch allerlei zeugs gemacht um das ich mich so nicht kümmern muß)
So viel als Info...

Mein Problem ist nun, dass ich dem Benutzer die Möglichkeit geben will über eine Ini-Datei alle Felder und Tabellen zu bestimmen die in die Exportdatei aufgenommen werden müssen. Funktioniert alles klasse.
Nun möchte ich aber regelmäßig die importierten Felder updaten.......

Nur wie würdet ihr es anstellen euch die Datentypen(dezimal,CHAR...) aller Importierten Felder in der Datenbank zu organisieren? Ich kenne die Strucktur habe die Keys, nur da ich natürlich um den SQL-String zu erzeugen die DatenTypen für die Syntax wissen muß(LIKE, ≥,<>, NOT NULL...)ist es nicht gans so einfach.

Wie muß ich einen DataReader benutzen um in einer Vorlauf-Methode am performantesten den 100%tigen SQL-Datentyp zu bekommen?? Bin leider kein ADO.NET-Spezi.

07.11.2006 - 08:49 Uhr

Ja, ich glaub es artet aus... Sorry
Wenn ich anderen auf die Füße getreten habe... wollte ich nicht.
nur eins noch,
...
Das einzige was ich an Programmiersprachen nicht in der Ausbildung gelernt habe sind PHP und C#...
...

So und nun weitermachen.
Ich find das war ein gutes Beispiel das wir Netzies nicht nur "Strippenzieher", und die AE'ler "PAP-Abtipper" sein müssen...

Na ja und ich geb zu etwas übertrieben zu haben, zumindest wenn man es so versteht.
Ich habe mich nicht mit Einstein verglichen, sondern wollte auf die Leistungen von Menschen mit Lese/Rechtschreib-Schwäche oder Legastenie verweisen.

In diesem Sinne "happy coding" und viel Erfolg beim Studium oder der Ausbildung...

06.11.2006 - 22:36 Uhr

Albert Einstein hatte auch ne 5 in Deutsch Kleiner😉

06.11.2006 - 22:27 Uhr

Original von Traumzauberbaum
Natürlich musst du dich dann noch etwas über das Studium hinaus bemühen. In der Uni rennen übrigens auch haufenweise Leute rum die Ahnung von ihrem Fachgebiet haben. Mit denen kann man auch reden und Erfahrungen austauschen. Und das sind praktische Erfahrungen, denn jede Professur hat mehrere Forschungsthemen, bei denen es um echte Lösungen für echte Probleme geht.

Sachte, sachte, so war das nicht gemeint, natürlich haben die Profs Ahnung und ich finde z.B. den Fachbereich für Sicherheit in der Informationstechnick(nur z.B.!)
oder auch eine Menge sehr theorethischer Informatik-Fachthemen sehr interessant. Und ich meinte auch nicht, das man sich in der Uni nicht mit seinen Kollegen unterhält, oder nur Ansatzweise, dass die theorie an der Uni nicht mit praktischen Fähigkeiten oder den Lösungsansätzen vergleichbar sind.
Mir geht es nur darum, das die Zeit, die man mit seinem Ausbilder in einer wahnsinnig großen und heterogenen Netzwerk-Umgebung(bzw. Rechenzentrum oder aber auch Programmiertisch in einem Ausbildungsprojektraum)
verbringt wesentlich Intensiver ist als der überfüllte Hörsaal.
Die Theorie in der Berufschule muss natürlich auch im Zusammenhang gesehen werden. Leider gibt's natürlich das Problem der Kleinen Firmen, und da sieht die Ausbildung natürlich anders aus. Die sitzen Ja nicht in unendlichen teuren privatfinanzierten Schulungen im Eigenen Übungsraum.

Original von Traumzauberbaum
Außerdem solltest du dir echt mal bewusst machen, dass du nur einen wirklich kleinen Ausschnitt der Informatik kennst.

Natürlich ist man spezialisiert, muß man sich ja im Studium auch.
Und mir ist schon klar das es andere Sachen gibt als Proggen und Netzen.

Original von Traumzauberbaum
Nur weil du etwas nicht brauchst, heißt das nicht, dass es nie oder auch nur selten gebraucht wird. Du ziehst von dir die Verallgemeinerung zu allem. Schonmal nachgedacht, dass du einfach nur Glück hattest an diese eine Stelle zu kommen? Dass du ohne diese Stelle dir die Praxis gefehlt hätte, um erstens überhaupt an deine weiteren Stellen zu kommen (bewerbungstechnisch) und zweitens sie bewältigen zu können? Ist es ein guter Rat auf soetwas zu bauen?

Hmm, außer mir waren in unserem Ausbildungsbetrieb noch neun.
Und ich würde, die endlosen Projekte deutschlandweit, die vielen selbständigen Arbeiten und so weiter, mit einem Studium definitiv nicht besser hinbekommen...

Ok glück muß man haben, und gott sei Dank habe jetzt meinen Festvertrag bei einer Inovativen kleinen Firma im Aufstieg.
Vor den Entlassungen zur Zeit (SBS, etc. )bist du auch mit dipl. und wie Ich mit nem Zeugnis von 1.0 nicht sicher.
Wo wir dann schon wieder bei der Selbstständigkeit wären.
Da zählt glaub ich auch Erfahrung😉

Original von Traumzauberbaum
Und wo dir vieleicht auch einfach das Verständniss fehlt: Auch du benutzt Theorie. Du hast die Theorie durch Praxis gelernt, aber ohne die Theorie würdest du jedesmal von vorne anfangen müssen ein Problem zu lösen. Aber du weißt wonach du suchen musst, wie du an das Problem rangehen musst, genau das ist Theorie. Was also bringt dir die Theorie? Eine Lösung zu Problemen, die du noch nicht hattest. Was bringt dir Praxis? Eine Lösung zu einem Problem, das du schonmal hattest.
Wenn du nicht aus deiner Praxis zu einer Theorie abstrahieren kannst, bist du einer von denen, die sich an ihrem Office '98 festklammern, weil sie Office 2000 schon nichtmehr verstehen.
Du siehst es vieleicht nicht als Theorie, aber genau das ist was, was einem eine Theorie vermittelt.

Und schöön, endlich mal einer der mir erklärt das die Praxis auf Theorie aufsetzt.8)

Es scheint mir so als ob Du keine Ahnung hast, was eigentlich außer dem puren Tippen oder Netzwerk noch so alles zum Berufsbild des Fachinformatikers zählt.
Man nehme nur mal das Projektmanagement.
Und deine schöne Formulierung könnte auch durchaus jemanden beleidigen, zumindest wenn er sich angesprochen fühlt.
Nur da ich außer C# noch Perl, PhP, COBOL, REXX, C-Scr., Assembler, Javascr., VB (darf man die Unix-Shell-Dialekte hier eigentlich aufführen??)... spreche und mich ne menge Kumpels(übrigens Inf.Studies) um Raht fragen...

Mein Fazit:
Wenn ich Spaß an rein theorethischer Mathematik hätte, dann würde ich auch Informatik studieren.
Da dies aber nicht so ist, kaufe ich mir lieber die Bücher die ich wirklich gebrauchen kann in der Maierschen oder im Netz. Anstatt vom Prof.
Wer das Geld von den Eltern bekommt und sich um die Studiengebühren und Bafög keine Sorgen machen muß sollte sich aber auf jeden Fall mal das Studium anschaun. Abbrechen könnt ihr ja immernoch. Viele Kumpels und Bekannte machen jetzt, nach dem Abbruch (immer so zwischen 3. und 5. Semester) eine Ausbildung als Fachinformatiker.

Wer keine Lust auf Mathe hat, hat nicht gleichzeitig schlechte Karten in diesem Berufsfeld, wenn er trotzdem logisch denken kann!

Ich will und wollte mit meinen Äußerungen nicht persönlich werden.
Mathe war bis zur 10 immer mein Lieblingsfach....


Ich dachte noch nie ich sprech nen guten deutsch 😉

06.11.2006 - 18:58 Uhr

Also Ihr habt ja recht, da war jetzt schon etwas Netzwerk-Fetischistisch:

Aber, ein Fachinformatiker FR Systemintegration ist kein reiner Netzwerkadmin.
Er ist Systemintegrator... Das Ausbildungsbild wird nur von vielen Firmen falsch verstanden. Und Ihr habt auch recht, dass wenn es um hardwarenahe Entwicklung geht, ein Studium schon mehr Grundlagen vermittelt.

Nur Assembler ist mir auch kein Fremdwort, und Mikrocontroller usw. auch nicht.

@Traumzauberbaum:
folgendes, wenn Du versuchst mir die Wörter in der Hand umzudrehen:

Nenn mir einen Grund warum du das, was du ohne Studium gelernt hast, nicht mit Studium lernen kannst.
Dieses habe ich NIE behauptet!!!

Es wird dich auch nicht daran hindern es zu Lernen, nur Fakt ist:

alles was du dir selbst durch Praxis beibringen kannst, hättest du dir genauso selbst beibringen können, wenn du Informatik studiert hättest.

!!! Nein, ist nicht richtig. !!! Denn dann fehlt dir der tägliche Erfahrungsaustausch mit Kollegen😉. Was man nicht so alles in der Kantine gelehrnt hat😉

Ich habe nicht gesagt dass ich mir alles selbst beigebracht habe, na ja schon viel aber ERFAHRUNG kannst du nicht in einem Buch lesen.
Wenn du im Betrieb einen Pro als Ausbilder hast, und in einem Bereich arbeitest
der mit sehr komplexen Problemen zu tuhen hat, ist die praktische Problemlösung mit deinem Ausbilder wesentlich efizienter als das gelaber von einem Prof, in einem überfüllten Hörsal. Dein Ausbilder(wenn er gut ist!!!) wird dir wahrscheinlich mehr zeigen als die meisten Profs können, weil er die Wichtigkeit in der Praxis ganz anders einschätzt.
Es gibt immer viele Möglichkeiten an ein Problem heranzugehen, und viele davon kann man aus einem Buch lernen! Aber nicht alle. Da sind wir wieder bei der Erfahrung.
Die besten Lösungen sind meist sehr trivial, das gilt für die Software-Entwicklung genau so wie für den Netzwerk-Bereich, dass sollte ja jedem klar sein.

So, nur jetzt erklär mir mal bitte wie ich mit Studium mit meinen 23 Jahren so weit hätte kommen können.(Ich habe jetzt schon Projekte gemacht um die Kohlen von dipl.Infs. aus dem Feuer zu hohlen, weil ihnen der Weitblick gefehlt hat)
Und das soll hir keine verallgemeinerung sein, ich habe nichts gegen Studenten, nur gegen solche, die fern ab von der Realität denken, Sie währen was besseres als nur so ein "Strippen-Zieher"(Fa.Sys)

Und übrigens solltest du ja selbst gemerkt haben, dass das was dir dein Prof erzählt 1 zu 1 in Büchern steht...
Ich habe eine menge gast-Vorlesungen besucht...
Es ist nicht so, dass ich nie über ein Studium nachgedacht hätte, nur warum soll ich noch Studieren? Für Mathe? Für Algorythmen aus einem Buch? Ein Studium, bringt dich fachlich sicherlich nur weiter als eine Ausbildung wenn es nur um's tippen oder Projektleitung geht... 😉 Na ja gut die Uni-Partys vieleicht, zumindest zwischenmenschlich😉

Ok ich gebe zu ich bin nicht der normale Fachinformatiker FR Systemintegration,
mein Werdegang ist auch nicht als Maßstab zu sehen, aber:

  1. ich habe mir drei Jahre Abi gespart:
  2. Ich habe eine Ausbildung bei einer der größten Versicherungen gemacht,
    die man nach anfänglichen Schwierigkeiten mit der Berufschule (habe 99 die Ausbildung angefangen, und wir waren erst das zweite Abschlussjahr)
    eher als ein Privat-Studium bezeichnen könnte.
  3. Die Zeit die ich sonst fürs Mathe-Pauken verschwendet hätte, habe ich so an Erfahrung gelernt.
  4. Habe in und nach der Ausbildung Einblick in Teilbereiche der Informatik bekommen, die an einer Uni gar nicht unterrichtet werden.(Großrechner, SNA, DB2, Server-Systeme in der Praxis, IdentitiManagement etc.)
  5. Hatte die Möglichkeit mich im dritten Lehrjahr auf Network-Design und Management zu spezialisieren. So weit ich weiß gibt es da nur den Studiengang Network-Computing in Chemnitz.

Richtig, was das lernen einer Programmiersprache betrifft, das erstellen von Dokumentation, die Planung der Entwicklung, mag ein Studium sehr gut sein.
Mir wurde so etwas von Ausbildern in der Praxis gezeigt!!!
Das ist der Unterschied... Wenn das Programmieren eh ein Hobby ist, kann man die Zeit besser investieren, das ist was ich versuche Dir zu erklären.

Und nur so nebenbei fast alle Projektleiter ziehen Praktiker Theoretikern vor.
Was bringt dir die tollste Theorie, wenn die Praktische Erfahrung fehlt um zu beurteilen das die Lösung zwar toll und kompliziert ist, sie aber sich auf lange Sicht nicht warten oder nur schwer sichern lässt?

Aber jetzt genug der Reden, jedem sollte überlassen sein was er macht,
und wenn man keine Probleme mit Mathe hat und das gerne macht ist ein Studium nie faslch. Die Gesellschaftliche Stellung(unter allen SNOPS 😉) ist sicherlich besser.

😁 8)
In diesem Sinne: Macht alle das was euch glücklich macht, doch für den der in der Freizeit eh tippt kann eine Ausbildung den Horizont wahnsinnig erweitern, weiter als es selbst das kiffen könnte. 8) 😁

Viel Spaß beim Tippen, ich habe ihn nach wie vor auch ohne dipl. 😉

06.11.2006 - 17:01 Uhr

@Traumzauberbaum:
Aber geh mal davon aus: alles was du dir selbst durch Praxis beibringen kannst, hättest du dir genauso selbst beibringen können, wenn du Informatik studiert hättest.
_________________________________________--

Was????? hab ich mich da verhört? Denkst du wirklich die Theorie des Studiums bringt dich so weit?
Willst du mir weißmachen, dein Studium lehrt dich alles?
Es gibt Gründe warum ich bis jetzt nicht Informatik studiert habe, und es auch nie werde.

Schon mal nen Cisco 6500er, oder 7200er konfiguriert?
Schonmal Verbindungsabbrüche von Sockets über mehrere Hops/Walls(Router/Firewalls oder andere Layer3/4)-Geräte versucht zu beheben???
Schon mal Performance-Probleme in einem Heterogenen-Netzwerk gesucht?
Schonmal versucht einen Kommunikationsfehler einzugrenzen???

...
Nein ich gehe nicht davon aus, werde es auch nie und kann über solche Aussagen nur lachen!
Mit deinem Studium schon fertig?

06.11.2006 - 15:19 Uhr

Hm ja ich bin ich wer fragt denn?

ich sage nur Veltins(Krommi) the best ever😉.

06.11.2006 - 14:43 Uhr

Da ich in meinem Berufsleben schon eine menge Erfahrungen gemacht habe, möchte ich jetzt hiermit auch meinen Senf dazu geben... Könnte einige Leute von euch Interressieren, die nicht nur Tippen, sondern sich auch für andere Gebiete der IT(3rd-Level Network-Support, Network-Management, Firewalls(Appliances etc.), insbesondere Network-Programming oder Netzwerk-Scripting) interressieren:

Es scheint im Allgemeinen die Annahme im Raum zu stehen, dass man es bei großen Firmen nur mit einem dipl.inf. oder ähnlichem in bestimmte Gehaltsklassen schaffen kann. Dies kann ich so nicht stehen lassen. Meine Erfahrung zeigt, das dies zwar im "Öffentlichen Dienst" durchaus richtig ist, in den meisten großen Betrieben(Siemens, etc... fast überall) sind allerdings besonders im Themen-Übergreifenden Bereich die Erfahrung und die Tiefgreifende-Fachkenntnis das A und O. !!Es gibt eigentlich immer Regelungen was "wofür" verdient wird!!. Es werden im Mantel-Tarif Aufgaben des Arbeitnehmers beschrieben.
Wenn also ein Arbeitnehmer diese Aufgabe übernimmt, hat er anrecht auf die definierte Bezahlung nach der Gehaltsstufe der Aufgabe.
Wenn also ein Fachinformatiker als System-Programmierer eingesetzt wird, sollte er sich schleunigst die Aufgabenbeschreibung im Tarif-Vertrag ansehen. Dort steht genau was gemacht werden muß. Und wenn es um Verantwortung für den getippten Code geht, (wenn kein Vorgesetzter den Code kerrektur liest 😉) ist dies eigentlich auch immer ein großer Sprung für das Gehalt.
In den kleinen Firmen allerdings, sollte man versuchen genau die Aufgaben zu definieren, und anhand dieser Definition sollte das Gehalt eigentlich definiert sein.
Fazit 1: Als Fachinformatiker also niemals freiwillig im Öffentlichen Dienst als Angestellter arbeiten, es sei denn man will einen sicheren Job, pünktlich Feierabend, und genug Schlaf😉. Reich wird man im öffentlichen auf keinen fall.

Nun mal zu einer Sache die ich in diesem Thread gelesen habe, und die mich so ziemlich entsetzt:
**Es scheint die Allgemeine Ansicht vieler Jungs hier zu sein, das man nur als Dipl.Inf.(oder ähnlich), oder als Fachinformatiker FR AE usw. das Recht auf einen guten Verdienst hat.... Wer hat euch denn gestochen... ist solche Arroganz eine Berufskrankheit??... **
Tut mir leid Jungs, aber meine Erfahrung in wirklich großen UHD und vor allem im Network-Management und 2nd-, bzw 3rd-Level Network-Support, hat mir bbis jetzt gezeigt, dass die meisten Anwendungsendwickler einen weitaus kleineren IT-Horizont haben als die viele (wie Ihr es so schön nennt) Strippen-Zieher.
Wie wollt ihr auch gut performante Netzwerk-Anwendungen (however how much Tiers😉) schreiben, wenn ihr es nicht mal gebacken bekommt, zu erklären was bei einem Router oder einer Firewall auf Physical, Network, bzw. Transport-Layer passiert. Geschweige denn was eine falsche Einstellung der MTU-Size bewirken kann? (vieleicht etwas hart, geht ja auch nicht an alle😉, don't hate 8))

Ich persönlich habe warscheinlich in meiner Abschlussprüfung zum Fachinformatiker FR Systemintegration in 32 Stunden mit Perl kompliziertere sachen gemacht als die meisten AEs in ihren 72.
Im Zuge meiner Netzwerkanalyse musste ich zusätzlich einen TCP / IP-Packet-Filter schreiben weil die vorgesehene Software "Observer" von NI die Funktionen nicht konnte. Hätte das ein AE'ler ohne sich aus dem Fachbereich zu verlassen so geschaft? (das war 2002)
Wenn man euch sagt setzt doch nen Sniffer ein denkt Ihr doch meist an Schnee!!!
Könnt ihr mal eben so per SNMP oder Telnet ein Programm zur Konfiguration von aktiven Netzwerk-Komponenten schreiben, ohne euch vom Network-Management sagen zu lassen wie ihr die Befehle 1 zu 1 umsetzt?

Ich persönlich habe bei einer großen Versicherung Fa.Sys. gelehrnt, und habe Network Know-How für drei... Programmieren habe ich aber nach Ausbildungsplan genau so. Alle drei Lehrjahre... Und wir haben zusätzlich auch COBOL am Großrechner gelernt. Doch wer von euch AE'lern, die Ihr so über "Strippen-Zieher" lacht hat schon einmal LoadBalancing konfiguriert?

Fazit: Ich habe mit meiner Ausbildung als Fachinformatiker FR Systemintegration schon als Systemprogrammierer gearbeitet und habe vielen Studies gezeigt wie's funktioniert. Wenn es um Geld geht zählen die Fachkenntnisse, die Eier, der MUM und vor allem Führungsqualtitäten....

P.S: Bitte nicht persönlich nehmen, ich meine hier keinen speziel von euch, aber habe seit Jahren mit AE'lern zu kämpfen die meinen nur weil man FA.SYS. ist könnte man keine Anwendungen-Entwickeln(wie auch tippen). An alle die das immer noch denken und glauben das man AE'ler sein muß, fragt mal die SBI-Ruhr(Services für Business IT Ruhr, SBS ehemals RAG Informatik) 😉 in diesem Sinne...
Cu

03.11.2006 - 11:34 Uhr

Mein Problem ist anscheinend alles andere als trivial.
Wenn ich in meinem Code die Checked Eigenschaft setze funktioniert alles einwandfrei, setze ich sie währen der laufzeit über einen Click auf die Checkbox der Node, so bekomme ich die StackOverflowException.Woran liegt das... bin schon am verzweifeln...



public class ArchiveTreeNode : TreeNode
{
//... other Properties and Member-Data
        new public bool Checked
        {
            get {   return base.Checked; }
            set 
            {
//An dieser Stelle bekomme ich eine StackOverflowExeption,
//wenn ich im Treeview die Checkbox anklicke!!!
              [B]  base.Checked = value;[/B]
                // this.CheckedChanged(value);
            }
        }
//...
        public ArchiveTreeNode(string Text) : base(Text)
      {
            //...
      }

        [STAThread]
        public void CheckCheckState(bool pC, ArchiveTreeView tv)
        {
//Hier kann ich meine Checked-Property setzen, es funktioniert einwandfrei...
            this.Checked = pC;
            if(!pC)
            {
                bool isDirect = false;
                foreach(string s in tv.ArcConf.MonitoredArchives)
                {
                    if ((this.TbArcNodePath == s) || ("/" + this.TbArcNodePath == s))
                    {
                        isDirect = true;
                        this.isDirectMonitored = true;
                    }
                }
                    foreach (ArchiveTreeNode n in this.Nodes)
                    {
                        n.CheckCheckState(false, tv); 
//hier funktioniert auch alles, egal wie tief diese recursion weitergeht.
//Die StackOverflowException tritt nur auf wenn ich ein Check über das 
//Treeview ausführe.
                    }
             }
           //....
          }
}


02.11.2006 - 21:41 Uhr

Hey thanks....

ja funktioniert auf jeden fall...

Wie ich Überstunden auf RestAlkohol vom Feiertag hasse...

Wäre mir morgen wahrscheinlich auch eingefallen...

Schönen Abend noch, ich geh jetzt heim...
____-UPDATE-

Also es funktioniert nicht so wirklich.
Wenn ich base.Checked setze, bekomme ich eine Ausnahme vom Typ

StackOverflowException "Stellen sie sicher das es keine Endlosschleife gibt..."

Warum dass?
Da gibts es gar keine Schleife.

02.11.2006 - 20:32 Uhr

Hi an alle,

bin gerade dabei ein etwas umfangreicheres Projekt zu tippen,
und da brauche ich ein TreeView, das eigene Objekte enthält...
ein Tag ist zu unpraktisch, also tippe ich mir eine Klasse die von TreeView abgeleitet ist, und eine die von TreeNode abgeleitet ist.

Doch jetzt der Knackpunkt:

Eigentlich funktioniert das überschreiben der meisten Properties der TreeNode-Klasse echt perfekt, nur ein Problem gibts es:

Wenn ich die Checked-Eigenschaft überschreibe(muß im set ein eigenes Event feuern), dann kann ich mein Object wie ich will auf Checked setzen, das Treeview interressiert es einen Dreck.
Die Checkbox bleibt unchecked, selbst nach explizietem aufruf von *.Update().

Die Events des Treeviews würden ja auch funktionieren, aber da ich das Treeview und die Nodes-Klasse auch für verwandte Anwendungen benötige, !!!MUSS!!! sich die Node nach guter OOP-Manier selbst verwalten.

...
Was muß ich der Node im set noch sagen?, und wie heisst der private Member für die Checked Property, obwohl das jaso ziemlich schnuppe sein dürfte.

Thanks im Voraus... hoffe ihr könnt mir helfen...

20.10.2006 - 17:38 Uhr

Update...

hmm, scheint ja kein großes Interresse an so einem Dialog zu bestehen...
Na ja falls jemand einen Braucht und als Grundlage meinen haben möchte einfach bescheid geben.

Gruppen und User lassen sich aus der AD in reinem Managed-Code auslessen, per Dialog versteht sich...

13.10.2006 - 17:13 Uhr

Hi Leute,

habe mir auf der Suche nach dem Windows AD-Object-Dialog die Finger wund geklickt und nichts gefunden, was nicht auf unmanaged Code und oder Externen DLLs basiert. Bin gearde dabei ein eigenes Fully-Managed Control zu schreiben, um die Auswahl von AD-Objects(Computer, etc), AD-Groups(Gruppen) und AD-Usern(Benutzer) komplett in .Net hinzubekommen (ich hoffe Ich habe nicht etwas übersehen und es gibt schon eine Komplett-.NET-Lösung, wenn ja bitte sofort posten...).
Dazu 2 Fragen.

  1. Wie hättet ihr das ganze am liebsten???
    -als von Dialog abgeleitete klasse, oder als normales WinForm?

  2. Wie hättet ihr die Übergabe am liebsten als AD*****-Array, als AD****-Collection, oder als Dictionary<string, AD-Object>?

Bin gerade in der Entwicklung schätze Montag Abend ist das ganze Project hier gepostet.
(Brauch es Montag für nen Kunden, und möchte ja auch noch Wochenende haben 😉 )

11.10.2006 - 13:59 Uhr

Nicht schlecht Herr Specht...

schöner Artikel. Wenn ich mal Zeit kann poste ich gern noch einen Teil über das Remoting mit dem Service und vorallem die ServiceController-Class.

In diesem Sinne nice Work...

11.10.2006 - 13:53 Uhr

Ja SUUUPER...

dann hab ich ja in meiner .NET-Vergangenheit viel zu viel Code geschrieben...
und sogar noch unnötige NULL-Prüfungen eingebaut... 😁
👍Auf was man nicht alles durch so einen kleinen Beitrag aufmerksam wird. 👍

8)Wollte doch eigentlich nur schreiben, dass man es bei Datenbank Anwendungen oder Eigenen DB-Connectoren(Nicht SQLServer oder MsIdentityInformationServ. Connectoren) vorziehen sollte eine Datenbankverbindung im geöffneten Zustand als Instanz-Member des Forms oder der Base-Class vorzuhalten. 8)

Danke Jungs... hätte auch weiterhin den Destruktor wie früher benutzt...

10.10.2006 - 20:21 Uhr

Danke VIZone,
das ist doch mal eine Aussage...

Mal zum Verständnis, wenn ich den Destrucktor nutze, kann es sein das ein Instanz-Member meiner Klasse schon aufgeräumt ist? Ich dachte es wird erst der Destructor meiner Klasse ausgeführt, und dann alle Instanz-Daten meines Objektes beseitigt...

Thanks, schönen Abend noch.

Jan

10.10.2006 - 18:44 Uhr

🤔
OK,
richtig IDisposable zu implementieren Funzt natürlich auch gut...
Aber, ist im Destructor wirklich der falsche Platz???

rufe dort auch eigentlich nur immer eine Methode der Klasse auf die die Verbindung schließt, wenn das Objekt noch im Speicher ist. Diese Methode wird dann natürlich auch in Dispose aufgerufen(falls implementiert).

aber warum: "wer garantiert dir das der GC auch wirklich läuft?"
...
Habe mir darüber bis jetzt nur gedanken gemacht, wenn ich in meinem Code unsafe bereiche und/oder DllImports verwendet habe.

Und diesen Satz check ich auch nicht so wirklich, wenn SqlCon als Instanz-Member der Klasse deklariert und initialisiert ist:
"Früher oder später wird der mit Sicherheit aufgerufen, aber die Frage ist viel mehr, ob sqlCon nicht schon vorher vom Garbage Collector behandelt wurde."
????
Die Instanz-Daten sollten doch solange das Objekt meiner Klasse besteht auch im Speicher bleiben.

Hat jemand zu diesem Thema einen Blog oder ne genauere Doku zum GC?
Wann will der denn früher meine Instanz-Member killen? Wie soll denn dann die Objektorientierte Programmierung funktionieren...? Der sollte doch erst meine Instanz-Daten anfassen, wenn diese durch andere Programmteile nicht mehr referenziert werden, oder habe ich da etwas falsch verstanden??? 🤔

Auszug aus "Programmieren mit C#" O'Reilly"
Wie Destruktoren funktionieren
Der GarbageCollector pflegt eine Liste von Objekten, die einen Destrucktor haben. Diese Liste wird jedes mal aktualisiert wenn ein Objekt erzeugt oder zerstört wird.

Wird ein Objekt auf dieser Liste zum ersten Mal eingesammelt, wird es zusammen mit anderen Objekten, die zerstört werden sollen, in eine Que gestellt. Nachdem der Destruktor ausgeführt wurde, sammelt der Garbage Collector das Objekt ein und aktualisiert die Liste"

____________ Ok ... Ich zitiere eine Zeile weiter unten auf der Seite.

".... Der Destrucktor wird vom Garbage Collector aufgerufen.Wenn Sie mit wertvollen unmanaged Ressourcen arbeiten, die Sie schließen und so schnell wie möglich verwerfen möchten, sollten Sie IDisposable implementieren."

Ich möchte doch aber erst die Verbindung schließen, wenn mein Programm ganz kurz vor dem Ende ist, nicht beim Beenden sondern am Ende vom Beenden 😉.
Gibt es noch einen späteren Zeitpunkt als den Destruktor. Habe So noch nie Probleme gehabt, wenn ich Full-Managed-Types verwendet habe...

Lasse mich da gern belehren..... ?(

09.10.2006 - 17:19 Uhr

Hi in welchem status ist denn dass Projekt?

Muß nen frontend für Easy-Archiv bastelln, und möchte direkt über twain den Scanner Abgreifen, und so direkt das OCR anstoßen.

Würde mich bereit erklären mit zu arbeiten.

09.10.2006 - 16:36 Uhr

Abgetrennt von Ressourcen schonen - Datenbanken richtig öffnen und schließen

Hi .Kai,

guter Beitrag, besonders für ASP-Anwendungen zu empfehlen Ich würde Ihn aber gern etwas erweitern.
Und zwar:
Es kann durchaus richtig und wesentlich performanter sein, die Sql(bzw. ODBC)-Connection Objekte nicht vom Garbage-Collector aufräumen zu lassen.
Besonders in Windows-Forms-Applikationen die viele Datenbank Operationen durchführen.
Wenn ich z.B. ein Verwaltungs-Gui oder Ähnliches führ eine bestimmte Datenbank schreibe, kann der Performance-Verlust für das ständig erneute aufbauen der Datenbankverbindungen ziemlich groß werden.
In diesem Fall ist es wahrscheinlich, oder zumindest nach meinen Erfahrungen wesentlich besser, die Connection Objekte als Instanz-Member des Forms oder der bestimmten Klasse im Verbundenen Zustand vorzuhalten, da so bei den unzähligen Datenbankzugriffen die Verbindungszeit wegfällt.
Außerdem ist es so möglich, eventuelle Exceptions, Fehler oder ähnliches direkt in Log-Tables oder ähnliches zu schreiben.
Der Speicherbedarf ist zwar nicht all zu gering, diesen kann man aber getrost in Kauf nehmen.
WICHTIG: Man muß darauf achten, dass einem Connection-Object, gleichzeitig nur eine Reader-Instanz zugeordnet ist. Es kann sehr oft wichtig sein, die Using anweisung so, oder ähnlich zu implemetieren.


// SqlConnection sqlCon ist als Instance-Member deklariert,
// und beim start initialisiert und geöffnet worden.
internal void example()
{
  using(SqlCommand cmd = new SqlCommand("select * from table where Id <=" + this.SetID.ToString(), sqlCon))
 {
    using(SqlDataReader rd = cmd.ExecuteReader())
    {
       while(rd.Read())
       {
              //hier der Code
       }
    }
  }
}
// jetzt sollte allerdings im Destructor auf das Abbauen der Verbindung geachtet werden. Sollte durch Garbage-Collection durchgeführt werden, ich achte allerdings immer darauf.
~MyClass(){
 this.sqlCon.Close();
}

P.S: keine Gewähr für Rechtschreib-Fehler 😉

07.08.2006 - 10:04 Uhr

@marsgk:
Ist schon richtig, danke für den Hinweis... wär ich ja nicht drauf gekommen. 😉

Problem ist nur, dass die Image-Klasse (eventuell mit der verwendeten Kompression) ein Problem hat. Da wie erwähnt die erste Zeile einen Bug in der Ansicht erzeugt. Dass ganze bild wird Schwarz dargestellt, obwohl es in der Fax-Software einwandfrei aussieht. Dieses Problem, wird allerdings so schwerwiegend, dass kein OCR des Faxes mehr funzt.
Tobit (hersteller der Fax-Software David) versichert das das tiff konform ist, und ich habe nichts gegenteiliges feststellen können.

@Rushmore:
Danke... Image_Processing_Lab hat aber das gleiche Problem... Scheint in der Image-Klasse(GDI+) zu liegen.

hmm, danke Jungs aber bis jetzt bringt mich nichts weiter...

Weiß jemand, wie die Kompression in Tiffs funktioniert? Ist das Tiff Zeileweise, oder Bereichsweise Komprimiert?

😉
Die Tastatur liegt einsam dort... Weil Father in der Mother-Board
😉

03.08.2006 - 19:24 Uhr

Gibts auch etwas kostenloses?

haben schon ne menge für das FineReader SDK hingelegt.

Thanks...

02.08.2006 - 16:36 Uhr

Hi,

Ich habe ein Problem mit dem TIFF Format und hoffe ihr könnt mir helfen.

Ich benutze als Faxlösung David und möcht meine Faxe(sind alle S/W-TIFFs) mit einer OCR-Engine behandeln.
Die erste Zeile der Bilddaten dieser Faxe, ist allerdings Datenschrott(schwarz), so daß vor allem die MS-Produkte mit der Anzeige Probleme bekommen.

Wie ist es möglich die erste Zeile der Bilddaten im Tiff zu überschreiben oder zu entfehrnen?

Wie kann ich generell auf Pixel-zeilen des Tiffs zugreifen.

Habe noch keine Erfahrung in der Behandlung von Tiffs.

Thanks im Voraus...

03.07.2006 - 22:38 Uhr

Du kannst doch ganz einfach im Projektmappen-Explorer einen Verweis auf deine DLL hinzufügen. Wähle bei deinen Projekten ganz einfach den Debug Ordner einer anderen. So kannst du die ganz Sie einfach einfügen, und später noch bei Bedarf editieren.

DLL-Projekt erstellen, dann funktionieren auch wunderschön alle kleinen IDE-Helferlein.

Du must dann nur bei der Verteilung deiner Anwendungen auf den Speicherort der DLL achten. zb. im gleichen Ordner... oder halt bei den anderen .Net-DLLS im Framework Ordner...

Got sei Dank, hab ich seit der Lauch endlich meine eigene PROF.

03.07.2006 - 22:17 Uhr

Update:
...+

so funktioniert...

wer Unterstützung benötigt, einfach posten.

Die HttpListener Class kann ich nur wärmstens empfehlen.

30.06.2006 - 09:05 Uhr

Hi,

bin gerade dabei einen "picturemaxx" Datenbank-Connector zu schreiben.

Hat jemand das schonmal in einer anderen Sprache oder in .NET gemacht?
Die Doku ist grauenhaft...

Gibts es vieleicht irgendwo FAQs usw...

Bin am verzweifeln grade daran.... 🙂

Die XML-Strucktur der Request ist beschissen, unlogisch...

Und die Bildübertragung, will trotz standardisiertem HttP nicht richtig funzen.

Hoffenlich hat jemand da ein paar nützliche Infos.

20.03.2006 - 07:48 Uhr

Hi Jungs,

hab mal ne kleine Frage:

Gibt es mittlerweile einen (Perl)Net-Telnet-Cisco bzw. vergleichbaren Namespace irgendwo im Netz? Suche mir die Hacken wund, und hab keine Lust die Cisco speziefischen Einstellungen selbst heraus zu bekommen! 😉
Habe in der Vergangenheit die Switches, Router und Firewalls über Perl angesprochen, doch da ich jetzt allerdings nen größeres Projekt vorhabe ist ne Scriptsprache nicht mehr das richtige... Nur leider ist auch in der FCL 2.0 nicht passendes. Nen Telnet Namespace habe ich gefunden, nen SNMP-Namespace auch... nur halt nichts Cisco spezifisches.

Alles was Cisco selbst anbietet ist für Java... Und illegal an Cisco-Works bedienen geht jawohl auch nicht.

Thanks im voraus.

09.03.2006 - 18:46 Uhr

Mahl mit System.Convert.ToInt32() probiert?

an sonsten muss du den UInt in nen long Convertieren.

Cu

07.03.2006 - 07:57 Uhr

Hy Jungs, hier mal mein Ansatz:


using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.IO;


/// <summary>
/// Die KLasse Ini ist  Repräsentant einer ini-Profile-Datei.
/// Die Klasse stellt alle Funktionen bereit, die sonst nur über die Win32-Api 
/// zur Verfügung gestellt werden. Kommentare werden noch nicht akzeptiert.
///  und rausgefilter. wird ergänzt.
/// </summary>
public class Ini
{
    private Dictionary<string, Dictionary<string, string>> Areas = new Dictionary<string,Dictionary<string,string>>();
    private Regex RArea = new Regex(@"\W*\[([0-9a-zA-Z -\\/]+)\](?>.*)");
    private Regex RKey = new Regex(@"\W*([0-9a-zA-Z -\\/]*=[0-9a-zA-Z -\\/]*).*");
    private String FileName;
    
    public Ini(string File)
    {
        this.FileName = File;
        this.Init();
    }

    public Dictionary<string, Dictionary<string, string>> GetProfile()
    {
        FileInfo theIni = new FileInfo(this.FileName);
        StreamReader IniFile = theIni.OpenText();
        string tmp;
        String ActArea = "";
        do
        {
            tmp = IniFile.ReadLine();
            if (tmp != null)
            {
                try
                {
                    Match m = this.RArea.Match(tmp);
                    if (m.Success)
                    {
                        ActArea = m.Value.ToString();
                        if (!this.Areas.ContainsKey(m.Value.ToString()))
                            this.Areas.Add(m.Value.ToString(), new Dictionary<string,string>());
                    }
                    else
                    {
                        if (ActArea != "")
                        {
                            if (this.Areas.ContainsKey(ActArea))
                            {
                                Match mk = RKey.Match(tmp);
                                if (mk.Success)
                                {
                                    string[] Str = mk.Value.ToString().Split('=');
                                    if (!this.Areas[ActArea].ContainsKey(Str[0].ToString()))
                                    {
                                        this.Areas[ActArea].Add(Str[0], Str[1]);
                                    }
                                    else
                                    {
                                        this.Areas[ActArea][Str[0].ToString()] = Str[1].ToString();
                                    }
                                }
                            }
                        }
                    }

                }
                catch { }
            }
        } while (tmp != null);
        IniFile.Close();
        return Areas;
    }
    
    public Dictionary<string, string> GetKeys(string section)
    {
        try
        {
            return Areas[section];
        }
        catch 
        {
            Dictionary<string, string> Error = new Dictionary<string, string>();
            Error.Add("Error", "Specified Section not Available!!!");
            return Error;
        }
    }
    
    public void Init()
    {
        this.GetProfile();

    }

   
   public void Close(Boolean Backup)
    {
        if (Backup)
        {
            this.WriteProfile(true);
        }
        else { this.WriteProfile(false); }
    }

    public void Close()
    {
        this.WriteProfile(false);
    }
    
    public String GetValue(String area, String Key)
    {
        try
        {
            return this.Areas[area][Key];
        }
        catch
        {
            return "Error";
        }
    }

    public Boolean SetKey(String Section, String Key, String Value)
    {
        Section = @"[" + Section + @"]";
        try
        {
            if (Areas.ContainsKey( Section ))
            {
                if (Areas[Section].ContainsKey(Key))
                {
                    Areas[Section][Key] = Value;
                }
                else
                {
                    Areas[Section].Add(Key, Value);
                }

            }
            else
            {
                Dictionary<string, string> KV = new Dictionary<string, string>();
                KV.Add(Key, Value);
                Areas.Add(Section , KV);
            }
            return true;
        }
        catch { return false; }
    }
    
    public Boolean SetKey(String Section, String Key, String Value, bool direct)
    {
        try
        {
            if (Areas.ContainsKey(Section))
            {
                if (Areas[Section].ContainsKey(Key))
                {
                    Areas[Section][Key] = Value;
                }
                else
                {
                    Areas[Section].Add(Key, Value);
                }

            }
            else
            {
                Dictionary<string, string> KV = new Dictionary<string, string>();
                KV.Add(Key, Value);
                Areas.Add(@"[" + Section +"]" , KV);
            }
            if (direct)
            {
                this.WriteProfile(false);
            }
            return true;
        }
        catch { return false; }
    }

    public Boolean WriteProfile(Boolean bc)
    {   
        if (bc)  
        File.Copy(this.FileName, this.FileName + "_", true);
        StreamWriter wr = new StreamWriter(this.FileName, false);
                  
            foreach (string Ar in this.Areas.Keys)
            {
                wr.WriteLine( Ar);
                foreach (string KK in this.Areas[Ar].Keys)
                {
                    wr.WriteLine(KK.ToString() + "=" + Areas[Ar][KK.ToString()].ToString());
                }
            }
        wr.Close();
        return true;
    }

     ~Ini()
    {
        this.Close(false);

    }
    
}

Xml sollte allerdings wirklich die bessere Lösung sein...
ist nur so dass man auf nem Unix sonst keine .INIs handlen kann...