Laden...
F
Ftee myCSharp.de - Member
Company-Bitch Dabei seit 21.06.2004 71 Beiträge
Benutzerbeschreibung

Forenbeiträge von Ftee Ingesamt 71 Beiträge

19.09.2004 - 14:46 Uhr

Hallo,

Ich habe es mittlerweile hinbekommen. Der gangbare Weg führt über eine DLL.
Das ist nicht so ganz trivial, und nun auch schon ein wenig her...

Es war irgendwas mit Broadcast, Socket binden, virtuellen Com-Port erstellen und dann diesen ganz normal verwenden... das führt allerdings Code-Technisch schon ziemlich tief ins System rein, und man sollte mir der Windows-API und C++ im allgemeinen schon ziemlich sattelfest sein.....

Ich müsste nächste Woche noch mal schauen wie ich das GENAU gemacht habe, dann kann ich hier was posten..... könnte aber dauern, da ich erstmal ein paar Tage weg bin.

Letztendlich kann man alles mögliche über Bluetooth machen, es kommt allerdings darauf an was das angeschlossene Gerät auch unterstützt! Diese Liste ist lang, und bei mir war es eben der virtuelle Com-Port 🙂

Gruss,
Ftee

18.07.2004 - 01:18 Uhr

Abkürzung vom nick "fruechtetee", welcher irgendwo nach "vertaggung" als [zZz]Fruechtetee in irgendein Feld nicht reinpasste, und darum etwas gekürzt werden musste 🙂

Der Nick hat sich gehalten, der Clan schon lang Geschichte. (Zumindest mein Anteil...)

16.07.2004 - 22:26 Uhr

neuronales Netz wär was, aber obs schneller ist? 😉)

Hat das Kreuz ne bestimmte Farbe ? Liegt es über allem? Hat es immer die selbe Grösse? liegt es immer im selben Bereich? Wenn nein, wie weit ist die Abweichung von der wahrscheinlichsten Position?

Fragen über Fragen 😉

Streifenförmig (mit Abstand der Grösse des Kreuzes -1) über das Bild gehen, wirds schon schneller machen. Eventuell Diagonal, je nach wahrscheinlichster/unwahrscheinlichster Lage des Kreuzes kannst du den Startpunkt etc. woanders anlaufen lassen.

16.07.2004 - 21:03 Uhr

C# ist auf jeden Fall sehr verdammt gut überlegt. Es hat den sehr guten Editor von MS, und der Aufbau des Frameworkes und der Sprache auch viel von der VCL. Die IDE ist Borland sehr ähnlich.
Man merkt, das der Delphi-Entwickler dabei gewesen ist. Wobei für mich ein grosser Teil der Komforts vom Editor ausgeht! Der ist fast so gut wie Ultraedit, einzig die Tasten und Macroverwaltung ist noch nicht ganz das Wahre, aber gibt ja immer was zu meckern 😉

Das Projektmanagement ist schlicht genial. Es ist kein Problem eine Solution mit 3 Dutzend Unterprojekte zu halten. Und das man die Startapplikation mittels zwei Klicks auswählen kann ist beim debuggen EXTREM hilfreich.

Ich arbeite sehr gerne damit.

Für mich war C++ mit der STL immer das höchste. Und ich halte es immer noch für sehr gelungen. C# bzw. .NET hat allerdings den Riesengrossen Vorteil, das es der Beginn eines Abschieds von COM ist! DAS ist es, was mich unter Windows immer wieder an den Rand der Verzweifelung trieb. Das Konzept des GACs insgesamt halte ich für sehr zukunftsfreundlich, obwohl ein "zumüllen" des Systems so leicht begünstigt wird, aber wie gesagt: es gibt immer was zu meckern 😉

Ich denke, das .NET allgemein ein grosser Schritt in der Windows-Welt ist. Insgesamt denke ich, das sich das Konzept und die Sprache auch unter Linux Freunde schaffen wird. Das dieses unterstützt wird, dafür wird Novell schon Sorgen. Auch die haben Interesse für MS und eigene Produkte möglichst identische Sourcen zu haben, und so gleiches Look&Fell sowie interne Integrität auf beiden Welten zu bieten.

.NET ist die Zukunft. Davon gehe ich aus. Es wäre ein Fehler auf altes zu beharren. Trotzdem wirds der grosse Umbruch erst mit Longhorn kommen.

16.07.2004 - 16:52 Uhr

wobei ich allerdings der Meinung bin, das man sich lieber mehr allgemeines Verständnis der allgemeinen Grundlagen und Methoden aneignen und pflegen sollte.... über mehrere Sprachen hinweg.
Spezialisten in einer bestimmten Sprache gibts wie Sand am Meer. (Ausser vielleicht SAP 🙂 )

Aber wenn man zu sehr auf eine Sprache oder einem Framework festhängt, wird man meiner Meinung nach "Betriebsblind".

Hat man ein paar Sprachen durch, oder ist gezwungen ständig verschiedene zu benutzen, merkt man halt das es letztendlich auch C# nur ein weiteres Werkzeug ist.
In ein paar Jahren wird auch C# durch etwas besseres abgelöst.

Im Moment ist es in Verbindung mit .NET wirklich ein gut gelungenes Gesamtkonzept. Keine Frage. Aber alles (auch C#) hat Vor- und Nachteile.

16.07.2004 - 10:25 Uhr

Original von NoOneKnows

Original von Ftee
Selbst (bzw. ganz sicher!) ist C# ohne Windows.Forms für GUIs ziemlich aufgeschmissen.
Entwicklung von Endbenutzeroberflächen ist heutzutage gefragter denn je, deshalb dreht sich viel um Windows.Forms. Aber im endeffekt mach es nur einen kleinen, aber sehr bedeutenden Teil des Frameworks aus. Und die kinderleichte Oberflächenentwicklung ist nunmal eine Stärke von C#. "Hätte, wäre, wenn" bringt an dieser Stelle garnichts.

  • brauche ein zum ersten Beispiel noch ne gute GUI und kann im Gegensatz auch ein wenig Performance verzichten, nehme ich Borland (Delphi, BCB)

Genauso nennt sich eine der wichtigsten GUI-Sprachen VB6 und die hat keinen unbedeutenden Anteil.

Auch Visual Basic hat einen Nachteil, und der nennt sich Runtime-Engine.

Überrede mal nen Admin das er ein Framework auf einem laufenden Produktivrechner installieren soll..... kannste vergessen.

Naja, du verallgemeinerst das zu sehr. Sicherlich hat .NET noch keine große Präsenz, aber die nimmt stetig zu. Wir bei uns im Unternehmen, und es sei gesagt, daß wir unsere Brötchen nicht mit der Software-Entwicklung verdienen, setzten sehr wohl auf die .NET-Technologie. Auf nahezu allen Prodiktivsystemen befindet sich daher bei uns auch das .NET-Framework 1.1. Du stempelst das so ab als wärs das reinste Risiko das Framework irgendwo zu installieren und das ist schlichtweg falsch. .NET hat eine sehr sichere Architektur. Wenn man sich die Zeit nimmt und es sich näher anschaut würde man dies auch zur Kenntnis nehmen.

Ich rede von Produktivrechner, die in der Industrie z.B. die Datenkontrolle von SPSen übernehmen. Da sind die Leute schon froh wenn das endlich einwandfrei funktioniert. Wenn so ein Rechner wegen eines neu installierten Frameworks und/oder updates nicht mehr so läuft wie vorher, dann hängt der Admin an der Hallendecke.... und du gleich mit 🙂
Der macht nichts auf seinem Rechner ohne unsägliche Schmerzen dabei zu emfinden. Und das fängt schon bei einfachen Updates an.

Muss ich ein Konzept für die Industrie erarbeiten, kommt C# eh nich in Frage.
[...]
Da geht kein Weg über BCB oder VC++. C# wird da noch lange nicht eingesetzt.

Was heißt denn Konzept? Man kann für allesmöglcihe ein Konzept erstellen. Und du stellst es jetzt wieder so dar, als wenn C# generell Schrott wär. Ich verweise gern wieder darauf, daß Unternehmen bereits die .NET-Technologie verwenden und damit ihre Software realisieren. Selbst dein geliebtes Borland verschließt sich in keinsterweise der .NET-Technologie, im Gegenteil sie versuchen beispielsweise mit dem C#-Builder oder mit Delphi auf den Zug aufzuspringen. Fragt sich ja dann warum? Schließlich fördern sie mit diesem Schritt auch den Wachstum von .NET. Auf längere Zeit gesehen werden sich sich schwelich dieser neuen Technologie verschließen können.

Du unterschlägst, das ich bei Zukunfstsicherheit bereits auf C# verwiesen habe. Und zum "heissgeliebten Borland" ..... Ich dachte eigentlich das klargeworden ist, das es mir ziemlich scheissegal ist mit was ich was programmieren muss. Es kommt darauf an was gefordert ist, und was noch integriert werden muss. DANACH suche ich aus, welche Sprache, Framework oder Entwicklungsumgebung ich nutze.

Es kommt darauf an, einen Kunden eine Lösung zur Verfügung zu stellen, die einwandfrei funktioniert. Wie bunt das ist, ist ihm wurscht wenns das tut was es soll, und er keine weitere Arbeit damit hat. Und ob er 1 oder 3 Monate wartet, ist ihm (wenn das Programm denn auch dann genau das macht was ER will) ziemlich egal....

Dem Kunden mag es egal sein, aber einem ökonomisch handelnden Unternehmen sicherlich nicht. Oder würdest du freiwillig 2 Monatsgehälter eines Programmiers aus dem Fenster werfen?

Ähm.... ich weiss nicht was du für Kunden meinst.... wenn ich von Kunden rede, dann SIND das Unternehmen. Und nicht grade kleine. Und ein ökomomisch arbeitendes Unternehmen nimmt in erster Linie das, wo man schon GUTE Erfahrung mit hatte, bevor was neues genommen wird. Und wenn ich für bestimmte Klassen und Schnittstellen die allesamt in C++ geschrieben sind meine Hand ins Feuer legen kann, weil die woanders schon rund um die Uhr ohne Ausfalls ihren Dienst tuen, dann nehme ich die als DLL mit in das nächste Projekt, wenn ich die da gebrauchen kann.

Der Kunde bekommt das was er wünscht, ohne das er zusätlichen Aufwand hat. Wenn die Frage nach dem .NET-Framework mit "nein" bzw. "was ist das?" beantwortet wird.... gut. Dann wird es eben nicht genommen.
Steht der Kunde vorher nicht fest, d.h. die Anwendung wird für ein Clientel geschrieben welches sich erst noch für das neue Produkt interessieren muss, ist es relativ egal womit man es realisiert wurde. Aber auch da würde ich nach Anforderung entscheiden.

Dieser Sprachenglaubenskrieg ist so ziemlich das zweitalbernste nach dem OS-Glaubenskrieg.

Man nimmt das was man am besten gebrauchen kann. Punkt.

15.07.2004 - 22:31 Uhr

Einen ausprogrammieren? 😉

Der ICFP ist ja grade gewesen....

Also doch halt daddeln.... 🙂

15.07.2004 - 22:30 Uhr

30 Tage keine "gotos", die Funktionen dürfen nicht mehr als 20 Zeilen haben, und eine Klasse nicht mehr als 10 Funktionen..... das sollte für den Anfang helfen 😉

(nur um sicherzugehen, das wir keine Vorurteile auslassen 😉 )

Hallo auf jeden Fall 🙂

15.07.2004 - 22:23 Uhr

Ich denke das die Diskussion hier immer wieder in Richtung GUI-Entwicklung schlägt.
Selbst (bzw. ganz sicher!) ist C# ohne Windows.Forms für GUIs ziemlich aufgeschmissen.

Wer Borland IDEs kennt, sieht ganz klar die Handschrift des Delphi-Entwicklers an der gesamten WYSIWYG-IDE Umgebung Ich muss sogar sagen, die die Windows-Forms in einigen Bereichen der VCL sogar noch recht deutlich hinterherhinken! Von daher liegen (wenn es auf die GUI-Entwicklung ankommt) immer nocht Delphi bzw. Borland C++ Builder relativ weit vorne. Die VCL ist ein wirklich gutes und sehr durchdachtes Framework.

An Sprach-Diskussionen habe ich nie verstanden, warum man eine bestimmte Sprache als das Allheilmittel herausstellt?

  • brauche ich eine Anwendung die performant auf möglichst verschiedenen Rechnern läuft, nehme ich VC++
  • brauche ein zum ersten Beispiel noch ne gute GUI und kann im Gegensatz auch ein wenig Performance verzichten, nehme ich Borland (Delphi, BCB)
  • brauche ich eine Anwendung die auf möglichst vielen Plattformen läuft, nehme ich Java.
  • brauche ich eine Anwendung, die eine möglichst lange Lebenszeit haben soll, und unter Windows läuft, nehme ich C#
  • brauche ich was für Pocket PC, nehme ich C# (eventuell in Verbindung mit VC++ DLLs für Rechenintensives)
  • brauche ich was für den Palm, nehme ich GCC

usw...

Muss ich ein Konzept für die Industrie erarbeiten, kommt C# eh nich in Frage. Überrede mal nen Admin das er ein Framework auf einem laufenden Produktivrechner installieren soll..... kannste vergessen. Da geht kein Weg über BCB oder VC++. C# wird da noch lange nicht eingesetzt. Nicht bevor Longhorn sich durchgesetzt hat, also in ca. 6 Jahren.

Es geht beim programmieren nicht darum, eine bestimmte Sprache zu beherrschen. Das kann im Falle C++ kaum einer. COM/COM+ noch dazu, die MFC, die WinAPI etc..... das ist nunmal alles dabei, und muss oft genug benutzt werden.

Es kommt darauf an, einen Kunden eine Lösung zur Verfügung zu stellen, die einwandfrei funktioniert. Wie bunt das ist, ist ihm wurscht wenns das tut was es soll, und er keine weitere Arbeit damit hat. Und ob er 1 oder 3 Monate wartet, ist ihm (wenn das Programm denn auch dann genau das macht was ER will) ziemlich egal....

15.07.2004 - 00:51 Uhr

Wenn ich auf den anderen Thread schiele, fällt mir leider auf, das viele keinerlei Ahnung von Referenzierung und dem Umgang damit haben.
Und leider auch nicht warum man das macht.

Das finde ich (gelinde gesagt) erschreckend....

15.07.2004 - 00:36 Uhr

Original von norman_timo
Erst wenn man es geschafft hat alle Referenzübergaben in ByValue umzuwandeln (und das geht, indem man alles objektrelevante in ein Objekt packt, und nicht mehr, und nicht weniger!), dann hat man Objektorientierung erst verstanden.

Unsinn. Du KANNST nicht alles byvalue machen, da eine value als Wertetyp definiert ist, und davon gibts KAUM welche. Nicht mal der string in c# ist ein echter Wertetyp.
Wertetypen liegen auf dem Stack, alles andere im Heap.

Was Lynix hier verdeutlichen will, ist die Tatsache, dass C# endlich objektorientiert gestaltet ist, und eine Referenzübergabe eine Vergewaltigung an dem Konzept ist.

.....
Das ist purer Unsinn.

@Ftee

Ich benutze permanent Referenzen. Wie machst du gescheite Rekursion ohne Referezen? Warum verbrauchst du unnötig Speicherplatz und Rechenzeit um Objekte zu doppeln?
???-> Soweit ich weiß, ist es so, dass Objekte im Heap gespeichert werden, und wenn man diese per Referenz übergibt, DANN wird eine Kopie im Stack gemacht und nach einer gewissen unbenuzten Zeit wieder aus dem Stack entfernt und im Heap überschrieben. Falls währenddessen sich das Objekt im Heap ändert, wird automatisch auch die Kopie im Stack verändert. --> _Also meiner Meinung nach ist genau das saulangsam! _

Ich erklärs Dir:
Objekte landen im Heap. Richtig. Du greifst auf die Objekte über eine Referenz zu. Die Referenz zeigt nur auf das Objekt, und ist es nicht selbst. Es ist möglich mehrere Referenzen auf das selbe Objekt zu halten, genauso wie es möglich ist mehrere Strassenschilder in verschiedenen Strassen aufzustellen, die alle den Weg in das Zentrum beschreiben.
Davon hast du aber nicht bei jedem Schild eine Kopie des Zentrums liegen, sondern immer noch nur ein und das selbe Zentrum. Die Betonung liegt hier auf "eins".

Ich weiß nicht wieviele "echte" Informatiker hier in diesem Forum tummeln, aber ich hab das auch so gelernt (Meine Studienrichtung ist IT), und ich weiß nicht warum mir Dozenten hier Blödsinn beibringen sollten, also glaub ich das mal so, was die sagen!
Die Dozenten an der Berufsakademie sind übrigns allesamt aus der Praxis, unterrichten also nur nebenher, die wenden das alles tagtäglich an, warum sollte das verkehrt sein?

Es gibt jetzt zwei Möglichkeiten, wobei ich niemanden zu Nahe treten will.
a) Die Dozenten haben keine Ahnung.
b) Du hast es falsch verstanden.

Egal ob a oder b, das im Stack eine Kopie des Objektes erstellt wird, ist falsch. Es wird nur eine Kopie des Pointers erstellt. (Es wird ein neues Schild gemalt)

Für dannyyy:
Probier es mal ohne Referenzen, und probier es mal mit Referenzen, und das was Dir besser liegt, das nimmst Du als dein Favorit.

Zum hundertsten (und in diesem Thread auch zum letzten) mal:
**Alles was du mit "new" erzeugt ist eine Referenz auf das Objekt! Ihr habt gar keine Wahl, du arbeitest bereits mit Referenzen! **

probiert folgendes aus, damit ihr das glaubt....


public void init () {
ArrayList ar = new ArrayList();
   int a;
   a = 10;
   ar.Add("test");
   change_array(ar, a);
   foreach(string t in ar) {
      Console.WriteLine(t);
   }
   Console.WriteLine(a.ToString());
}

private void change_array(ArrayList ar, int i) {
   ar.Add("from change array");
   i = 3;
}

Da die ArrayList als Referenz übergeben wurde, weil sie nunmal ein Referenztyp ist, wirkt sich die Änderung in der zweiten Funktion auch aus. Da der int ein Wertetyp ist, wirkt es sich nicht aus. Das int wurde kopiert, von der ArrayList nur die Referenz übergeben. Punkt. Sieht man sehr schön an der Ausgabe.

Ftee

13.07.2004 - 22:56 Uhr

Original von Lynix
......
Wer in C# mit Referenzen arbeitet gehört meiner Meinung nach erschossen, denn gerade C# bietet endlich Konzepte an mit denen die absolute Kapselung nicht mehr nur eine schöne Utopie ist.... Referenzen in C# zu verwenden ist in etwa so als ob man an nen Lamborghini nen Fuchsschwanz dranhängt... Dann könnte man auch beim Manta bleiben..

Ähm.... nimms nicht persönlich, aber das ist gelaber von jemanden, der Referenzen, Pointer usw. entweder nicht gerafft hat, oder zu faul war sich damit zu beschäftigen.
GRADE mit der expliciten Nutzung von Refenrenzen UND MIT DEM VERSTÄNDNIS dafür machst du aus deinem Manta einen Lamborghini.

Ich benutze permanent Referenzen. Wie machst du gescheite Rekursion ohne Referezen? Warum verbrauchst du unnötig Speicherplatz und Rechenzeit um Objekte zu doppeln?
Um Dich zu beruhigen..... du benutzt jedesmal wenn du mit einem Objekt oder einem string arbeitest mit einer einer Referenz... oder arbeitest du nur mit Wert-Typen auf dem Stack? 😉

Bei solchen Aussagen bin ich SEHR FROH, das in C# das goto auf switch-case beschrängt ist.....

13.07.2004 - 21:31 Uhr

Original von Noodles

Original von NoOneKnows
Ne, aber im Ernst: Sprachen wie VB6 waren schon immer deutlich besser für Windows-Entwicklung geeignet als C++. Die MFC ist so zum Beispiel ein einziges Rätsel für sich.

Das stimmt wohl, aber ich würde es anders ausdrücken:
GUI -> VB
Logik -> C++

Wer sich zur Oberflächenprogrammierung VC++ ausgesucht hatte, war mich Sicherheit auf der GUI nicht wirklich effektiv....
Borland C++ Builder ist da um längen besser.
(Teilweise ist der auch im Vergleich zu C# besser!)

Allerdings ist die reine Programmierung unter VC++ insgesamt angenehmer. Aber man kann ja locker nen Dll-Mix machen 🙂

Und C++ ist garnicht so schlimm, auch die Pointer nicht 🙂
Und sowas wie eine Triple-Pointerdefinition (**bla) auf die dann im Code nochmal ein Pointer-Cast über einen Pointer auf den Pointer mit sich machen lässt ((type)*(*bla)), sorgt zumindest für ein irres grinsen im Gesicht, wenn es klappt 😉

Man weiss zwar nicht ganz hundertprozentig was nun genau wo passiert, aber ohne diesen leicht mystischen Touch würds doch keinen Spass machen 😉

13.07.2004 - 17:40 Uhr

avg antivir?

http://www.grisoft.com

Da gibts ne Server-Edition

Habe ich privat und bei der Arbeit, und null Probleme 🙂 Ausserdem hält da die Lizenz 24 Monate, so das du effektiv nochmal die hälfte sparst. 🙂

Gibt auch ne Trial.

12.07.2004 - 20:44 Uhr

Sorry ...... --denkfehler--

11.07.2004 - 22:40 Uhr

Zusammen was zu programmieren ist sicherlich interessant. Allerdings stellen sich meines erachtens da folgende Probleme dar:

1.) Syntaxvereinbarungen die Bezeichner betreffend. An sich trivial, aber immer wieder ein Problem
2.) Ziele und Vorstellungen müssen sich vereinbaren und dann noch durchgezogen werden.
3.) Schnittstellen müssen definiert werden
4.) Es muss klar sein, wie der Workflow des Programms letztenlich ablaufen soll.
5.) Es muss von Anfang an klar sein, wer die Oberhand hat. Und das muss auch akzeptiert werden!
6.) Verschiedene Programmierparadigmen müssen zusammengefasst werden. Der eine arbeitet nunmal ungerne mit events, für einen anderen ist es ein zentrales Bindeglied. Die einen Benutzen statt einer starren Basisklasse lieber flexible spezialisierte Klassen und Interfaces. Die einen trennen sehr strikt GUI und Core, andere packen alles in die Klasse der GUI.

usw. usf.

Das programmieren selbst ist erfahrungsgemäss das kleinste Übel. Das Problem ist es, das Konzept zu strukturieren und sich dann auch daran zu halten.

Und über das Netz ein schlüssiges Konzept zu erarbeiten, stelle ich mir bei einem Projekt welches mehr als einen Programmierer braucht doch ziemlich knifflig vor...

11.07.2004 - 13:58 Uhr

such mal bei google nach "animierte gifs erstellen"

Ich weiss ja nicht ob du was ausgeben willst. Ich mach das mit PaintShopPro (Animation Shop) weils dabei ist. Davon gibts auch ne Trial-Version.

11.07.2004 - 00:23 Uhr

.... auf nen Splitter würde ich von Gefühl her auch tippen....

11.07.2004 - 00:22 Uhr

@Franknstein:

Das mit dem programmieren und daddeln erinnert mich an den Running-Gag, der damals über "meinen" Clan in den Foren kursierte:

Bei uns gab einen ziemlich hohen Teil an Programmiereren und Codern. php, perl, c++ .... es war eigentlich alles mindestens einmal vertreten, und es passierte auch regelmässig das in unserem IRC-Channel um Rat bei scripten gefragt wurde.
Wir hatte (glaube ich) allein 3 verschiedene, selbst erstellte claninterne TFC-Tastaturscripte (es war relativ normal bei TFC eines zu haben.), und unsere Webseite war aufgrund der hohen sriptzahl nahezu unwartbar 🙂

Irgendwann meinte mal jemand im Forum, das die beste Möglichkeit [zZz] im Spiel abzulenken wäre, ein Spray (kleine Graffities, die jeder Avatar an beliebige Wände als 'Tag' sprühen konnte) mit fehlerhaften Code-Stellen in unserer Base zu hinterlassen:
Wir würden alle komplett abgelenkt sein, und unsere Avatare vor diesem Spray versammeln, und das Spiel Spiel sein lassen 🙂

.... ich denke, so unwahrscheinlich wäre das garnicht gewesen 😉))

Gruss,
Ftee

10.07.2004 - 23:16 Uhr

Du kannst doch in der Basiszugriffsklasse die einzelnen Methoden beliebig überladen, das sollte es doch tun, oder versteh ich Dich falsch?


public int DeineMethode(int a) {
.....
}

public int DeineMethode(string t) {
.....
}

public int DeineMethode(int a, int b) {
.....
}

....usw.
Je nach übergebenem Parameter wird eine andere aufgerufen.

Eine andere Möglichkeit sind (um Franknstein mal vorauszugreifen 😉 ) Interfaces.

Implementiere ein Interface, in welche die Methode definiert, die benötigten Informationen rauszurücken (das werden ja letztendlich immer die selben sein).
Das implementierst du in die an die Funktion übergebene Klasse ..


// In der Basisklasse deines "Sammlers"
public void VonDiesenObjektSpeichern(DeinInterface sender) {
   DeinAntwortStruct str;
   sender.GibMirAlles(out str);
}


// In der Klasse die die Daten hat und gespeichert werden soll UND von
// "DeinInterface" abgeleitet ist.
public void GibMirAlles(out DeinAntwortStruct str) {
    /* str füllen*/ 
}

.... so in der Art sollte das recht geschmeidig gehen.

10.07.2004 - 22:23 Uhr

*rofl*

Auch wenn er es selbst nicht ernstmeint....... in dem Board gibts bestimmt welche die das ernst nehmen oder zumindest drüber nachdenken ....

nene.... weiss schon warum ich TFC gespielt hatte 🙂

(Mitglieder dieses Boards sind natürlich ausgenommen 😉

09.07.2004 - 16:28 Uhr

Was mir noch einfällt....

Schau NICHT nach C# .... schau auf das .NET Framework!

Du kannst da locker mit C++.NET arbeiten, wenns Dir Spass macht. Auch mit VB.NET, mit Delphi.NET, mit Eiffel.NET oder mit J# oder oder oder......

Es geht nicht um C#. Es geht um .NET. C# ist lediglich eine Sprache, die dem Framework .NET auf den Leib geschrieben wurde, und dieses am besten ausnutzen kann.

Und dazu ist es vollkommen egal, in welcher Sprache du dein Assembly (DLL) geschrieben hast, oder in welcher Sprache es geschrieben wurde. Es kann benutzt werden.

Warum nun C#? Ganz einfach, weil es .NET am besten ausnutzt, und weil es simpelst zu erlernen ist. Es gibt etwas weniger als 40 Schlüsselwörter, und die Syntax ist C/C++ kompatibel.

09.07.2004 - 15:21 Uhr

C++ ist in jedem Fall deutlich flexibler als C#, keine Frage.

Die Frage ist, wa du machen willst?

Wenn du unter .NET entwickeln willst, dann wirst du in C# alles finden, was du brauchst. Alles was du unter C++ mochtest, wird dir auf einmal abgenommen, bzw. zu Gunsten des Sicherheitssystems von .NET nicht mehr gestattet (ich rede hier ausschliesslich von managed code!). Pointer gibts nicht. Destruktoren sind nicht mehr nötig, bzw. kannst du auch garnicht mehr in dem Sinne verwenden. Wie auch, ohne Pointer?

Die Zukunft von Windows liegt in .NET
COM und die Abarten sind im selben Moment gestorben, als .NET als Zukunftsplattform von MS propagiert wurde. .NET wird sich durchsetzen, ob es nun alle wollen oder nicht, spielt keine Rolle. MS will es, das reicht. Sich dagegen zu wehren wäre schlichtweg dumm.

Nebenbei ist C# eine wirklich geile Sprache. Es macht Spass damit zu entwickeln.

08.07.2004 - 23:20 Uhr

Original von Lynix
*rofl*

Also wenn ich durch Zufall mal in den Genuß komme, so nen Programm von Euch auf meinem Rechner laufen zu haben, dass mir die Registry alle 5 Sekunden verfusselt, damit ich es nicht mehr zu machen kann und mir auch ansonsten alles "verkrüppelt" dann verklag ich Euch auf Schadenersatz nur mal soviel zu dem Thema 😉

na? die EULA nicht gelesen? 😉)))))

Übrigens machen die permanenten Zugriffe auf die Reg kaum einen Performance-Unterschied..... einzig die Festplattenleuchte leuchtet dauernd 😉

Original von Lynix
Nee, mal im Ernst, also ich bin der Meinung, wenn der Benutzer ein Programm über den Taskmanager abschiesst, braucht er sich nicht darüber zu wundern, wenn das Programm nicht mehr so arbeitet wie es soll. Wenn seine Daten dann hops sind bzw. nicht mehr geschrieben werden isser halt selber schuld. Ich kenne keinen Support der für sowas kostenlos aufkommt, also da würd ich mir keine Sorgen drum machen.

Als ich das immer weiter in die Spitze trieb, habe ich mir auch gedacht was fürn Kasperkram die "normalen" Viren sind...... wenn man sich wirklich Mühe gibt, macht man so noch nichtmal direkt Schaden, sondern fordert den Benutzer über Umwege selbst zu ner Neuinstallation auf 😉

08.07.2004 - 23:14 Uhr

Original von Franknstein
@Ftee
Sicher das der Destruktor nicht noch ausgeführt wird? Ich habe immer gedacht, das System lässt dem Programm noch x ms nach dem Senden der Schließen-Message bis das Programm aus dem Prozessseduler fliegt....

zu 99% ....
Ich habe damals mit Borland C++ Builder gearbeitet, und hatte auf ALLEN Events die das MainWindow hergab UND vor dem letzten "return" der Main() Code eingefügt, der zumindest ne Exception hätte erzeugen müssen..... nichts, nothing. Ich konnte das absolut nicht abfangen, es verschwand einfach sang und klanglos.....

Habe ich es im Tab "Anwedungen" beendet, kamen diese Events, aber nicht wenn ich den Prozess gekillt habe.

Original von Franknstein
Hammer, das übertrifft sogar meine FatDateiSystemDurchEndlosesOrdnerErzeugenZerschießenC-Programm.exe!!!

Waren die Anwendungen .net-Exen? Wenn ja, dann kann man die WindowsCd an den Start bringen und die mscorelib.dll nach Wiesen schicken.... Und wenn nicht kann man ja mit delte *.exe auf die Exejagd gehen ohne den Dateinamen zu kennen, natürlich aus der Wiederherstellungskonsole....

Nein, es waren ganz normale exen. NET gabs da noch nicht 😉
Die haben über UDP Ping-Pong gespielt, indem sie sich ständig neue MD5-Hashes des (mit der Seriennummer der Festplatte immer wieder verrechneten) empfangenen Hashes zugespielt haben. War einer fehlerhaft oder fehlte: zack, aus, ohne Rückfrage... auch Nachfragen ala "wollen sie nicht noch speichern?" von beliebigen Editoren kommt nicht mehr.....

Ohne Win-CD und Registry-Tool ist da kaum ein beikommen..... und wie gesagt, dazu müsste man erstmal wissen, wieso da was eigentlich passiert....

Und mein Fehler war, das ich eben beim debuggen "übersehen" hatte, das shutdown auszukommentieren...... ich habe ziemlich blöd geguckt, als der Test erfolgreicher war als ich dachte....
Und ins Internet kommt man ja nicht, um da mal zu schauen....

08.07.2004 - 22:51 Uhr

Es gab vor einiger Zeit ein iX-Sonderheft in dem (unter anderem) sehr viele Tools für .NET vorgestellt wurden. Auch UML-Tools. Probiert habe ich allerdings keines.

http://www.heise.de/ix/special/03/01/

Du kannst Dir die kostenfrei zuschicken lassen. Das klappt einwandfrei, mit Abbuchung vom Konto. 🙂

08.07.2004 - 22:46 Uhr

Hallo,

Eigentlich nur ne kurze Frage, wobei ich einerseits zugegebenermassen zu faul bin zum suchen, und andererseits auch Erfahrungsberichte mag 🙂

Ich habe ein abgespecktes Linux (eisfair) als Server/Router laufen, und wollte da zum Zwecke der Übung mit WebServices Mono installieren. Die Installation ist nicht mal das Problem, das sollte zu schaffen sein.

Laufen WebServices die ich unter VisualC# erstelle, teste, etc. ohne Probleme unter Mono? Wie verhält sich das mit dem starten dieser Services? Und da mein Router/Server ja permanent im Netz steht, wie sicher ist Mono?

Da ich nur sehr ungerne an meinem Router rumprobiere, frage ich lieber vorher.

Ich stehe da grade noch gaaaanz am Anfang, lese mich grade erstmal ein, und würde mich über Erfahrungsberichte und/oder Tipps zu eventuell auftretenden Stolpersteinen freuen 🙂

Danke&Gruss,
Ftee

08.07.2004 - 22:13 Uhr

Das mit den Interfaces geht so zwar, allerdings gehen die Vorteile des Events hier komplett verloren......
Der MainThread hat keine direkte Kontrolle mehr den Aufruf seiner Funktion, was mich z.B. sehr stören würde.....

Aber du bringst mich da auf ein Problem, welches in ähnlicher Form auf mich zukommt..... ich probier mal was aus...

08.07.2004 - 22:00 Uhr

Es fehlt natürlich noch, das du Sonderzeichen im Dateinamen der Anwendung nimmst... dann ist auch der Konsoleexperte ziemlich aufgeschmissen..... ich weiss nicht wie es unter XP/2000 ist, aber unter win98 reichte ein Leerzeichen an erster Stelle damit es nicht mehr aufgelistet wird......

08.07.2004 - 21:56 Uhr

Also erstmal kannst du alles abfangen vergessen, wenn die Application über den PROZESSmanager rausgeworfen wird. Zumindest war das sonst bei "alten" Windows-Anwendungen so. Entfernst du den Prozess, ist die Application auf einmal komplett weg.
Nix Destruktor oder ähnliches, der Speicherbereich wird ein einfach gelöscht.

Habe ich ausgiebig getestet, weil ich mal vor einem ähnlichen Problem stand.

Über einen Umweg kannst du folgendes machen, ohne der Anwendung Systemstatus zu geben:

Die Anwendung selbst machst du erstmal "Captionless", d.h. du gibts der Form keinen Text mit. Damit taucht die auch nicht mehr bei "Anwendungen" im Taskmanager auf.

Dann verkrüppelst du den Taskmanager noch ein wenig:
"DisableRegistryTools" in "Software\Microsoft\Windows\CurrentVersion\Policies\System" auf "1" setzen. Damit ist die Geschichte auch gegessen.
Das setzt du übrigens alle halbe Sekunde, nicht das es einer wieder einstellt 😉

Wenn du jetzt noch:

  • zwei Anwendungen startest, die sich gegenseitig permanent ein ping-pong zuschieben, und schlagartig Windows forced (d.h. ohne jegliche Rückfrage!) runterfahren wenn eine der Anwendungen fehlt
  • beide in die Autostart der Reg schreibst, und ausschaltest das jemand beim booten das Menü hervorzaubert (in der MSDOS.sys "BootKeys=0" setzen)
    ..... dann wirds richtig knifflig Windows ohne die Anwendung(en) überhaupt erst mal starten zu lassen.
    Zumindest mit Bordmitteln und ohne fremde Hilfe ists nahezu unmöglich. Dazu müsste derjenige zuerst erstmal raffen WAS da eigentlich alles abgeht....

Ich kann davor allerdings NUR warnen!!!!
Ich habe beim testen dieser besagten Application und der darauf folgenden Neuinstallation (weil eben NICHT jede Hintertür immer so klappt wie man sich das vorstellt!) ungefähr 3-5 verschiedene Hintertüren eingebaut, die ich auch oft genug nutzen musste.

Es ist ein Scheissgefühl wenn man seinen Rechner zwar starten kann, aber nur 3 Sekunden was davon hat, weil er dann wieder runtergefahren wird.....

08.07.2004 - 16:28 Uhr

Irgendwas mit "MenuItem" und "adden" ... schau mal in der MSDN unter den Stichwörtern, ist nicht weiter schwierig.

08.07.2004 - 16:25 Uhr

Was soll das für ein Programm sein, wo der User Lust haben sollte es abzuschiessen?
Das mach ich z.B. nur, wenn das Programm abgestürzt ist.

Ist es da nicht sinnvoller, das Programm absturzsicher zu machen?

07.07.2004 - 15:30 Uhr

Hallo,

Hat da schonmal jemand was mit auf dem Pocket gemacht?
OpenNetCF soll ja Unterstützung bieten, allerdings passt die Doku nicht zu der Realität der vorhandenen Klassen, und ist auch ansonsten eine der schlechtesten Dokus in der Hinsicht.

Das was ich lese geht teilweise auf einen virtuellen ComPort, oder über die winsock, wobei im zweiten Fall jedenfalls ausreichend Doku vorhanden ist, aber dieses eben nichts mit .NET zu tun hat, sondern straight C++ ist. seufz

Ist nicht das Problem das in C++ zu schreiben, und dann als DLL einzupflegen, aber ich würde mir doch lieber das hin und her sparen....

Weiss jemand was?

Gruss,
Ftee

06.07.2004 - 18:52 Uhr

Ah, ok, danke.
Hatte das nur mit Ultraedit geöffnet. Alles klar, wieder was gelernt 🙂

Gruss,
Ftee

06.07.2004 - 15:12 Uhr

Hallo,

Folgender Code:


XmlTextWriter _xtwriter = new XmlTextWriter(_filename, Encoding.UTF8);
_xtwriter.WriteStartDocument(false);
_xtwriter.WriteStartElement("stream");
_xtwriter.WriteEndElement();
_xtwriter.WriteEndDocument();
_xtwriter.Close();	

liefert folgendes Ergebnis:


<?xml version="1.0" encoding="utf-8" standalone="no"?>
<stream /> 

Das Problem sind die Sonderzeichen mit Werten 0xEF 0xBB 0xBF Am Anfang. Die tauchen auch nur bei UTF-8 Kodierung auf, sonst nicht. Dummerweise brauche ich die UTF-8 Kodierung ........

Jemand ne Idee?

30.06.2004 - 12:57 Uhr

Der Nutzen ist Riesig!

Angenommen du hast nen ganzen Haufen Klassen, von denen einige ein interface "Imeins" implementiert haben.
Die ganzen Klasseninstanzen hast du in einer ArrayList (aliste) abgelegt. Immer rein, und wo welche steht, weisst du auf Anhieb nicht.

Aber du willst, das alle Klassen die das Interface "Imeins" inplementiert haben, die Methode "meineMethode" ausführen, die sie ja nach der Interfacedefinition haben MÜSSEN.

also:


foreach(Imeins c in alist)
    c.meineMethode();

.... und das wars dann. 🙂

Interfaces kann man wirklich oft zu verschiedenen Zwecken einsetzen. Das ist nur EIN Beispiel.

30.06.2004 - 10:47 Uhr

Du kannst Interfaces nicht instanziieren.

Interfaces sind sozusagen "nackte" abstrakte Klassen, die nur die Methodennamen (+Parameter, etc) vogeben, die eine Klasse die dieses Interface implementiert, haben MUSS.

Stelle es Dir wie eine Karten-Schnittstelle am PC vor (z.B. PCI). Jede passende Karte passt in diesen Schnittstelle, und weiss auch an welchem Pin sie was zu erwarten hat. WAS allerdings genau hinter dieser Steckverbindung passiert, weisst die Karte nicht. Muss Sie auch nicht wissen. Wichtig ist nur, das die Schnittstelle vorhanden ist, und das am richtigen Pin das richtige ankommt. 🙂

29.06.2004 - 13:48 Uhr

Danke 🙂

Manchmal sieht man den Wald vor lauter Bäumen nicht.....

29.06.2004 - 13:37 Uhr

.... und sobald man versucht etwas zu bauen, was aufwändige Forms hat, und allgemein etwas komplexer ist, bekommt man schier das kotzen..... 😠

Ich bekomme hier seit Tagen einen Rappel, weil die Forms machen was sie wollen. Selbst die Reihenfolge der Events beim aktivieren wechselt nach Lut und Laune.....

Naja, hab ja genug Zeit 😉

29.06.2004 - 13:34 Uhr

hi,

Probiers mal so:



MyClass MyObj;
MyObj = ((MyClass)formatter).Deserialize(FileStream);


29.06.2004 - 13:27 Uhr

Hallo,

Folgendes Problem: Ich habe in meinem Project einen bestimmten Namespace, aus dem ich ALLE dort vorkommenden Klassen dynamisch erzeugen, und in einem Array halben möchte. Das starten geht ja mit Activator.CreateInstance(bla).
Allerdings fehlt mir nun noch ein Container mit Klassennamen.

Damit es nicht zu einfach wird, liegt das ganz zudem noch in einer DLL. Die Anwendung an die es gebunden wird, wird auch nicht immer die selbe sein.

*irgendwie* müsste es ja mit Reflection gehen. Falls da jemand ne Idee hätte.....

Danke,
Ftee

29.06.2004 - 11:32 Uhr

Original von cdr
..... ausser natürlich man verwendet irgendwelche Funktionen die von der CLR nicht auf das CF gemappt werden können ...

Siehst du? Und da ich (und wohl 99% der .NET Programmier) nicht wissen wo genau die Grenzen des Compact-Framworks sind, ist es eben ratsamer es gleich als DLL für da CF zu compilieren.

28.06.2004 - 17:43 Uhr

Poste bitte mal den Aufruf der DLL-Methode/Klasse und die Methode der Klasse die aufgerufen wird.

28.06.2004 - 17:41 Uhr

Es laufen nicht mal die DLLs.....

Die gesamte Solution MUSS schon für Pocket erstellt worden sein, da das Pocket-Framework (logischerweise) ziemlich abgespeckt ist.
Dummerweise immer die Teile des Framworks, die man permanent braucht 🙁
(SortedList ist z.B. so ein Fall....)

Allerdings sind einige Sachen mehr möglich, als in der Hilfe angegeben ist. Beim gebrauch von Intellisense tauchen beispielsweise mehr Events auf, als sie es in der Property-View tun.

Allerdings kannst du ohne Probleme Programme für Pocket-PC auf dem Desktop ausführen.

Wenn du sicher sein willst, das die DLL unter Pocket UND Desktop läuft, dann erstelle die schon von Anfang an für das Compact-Framework.

Gruss,
Ftee

28.06.2004 - 17:34 Uhr

Schau mal bei microsoft.com.

Wenn du verschiedene Sprachversionen hast, kann das Probleme geben, wenn das Framwork nacheinander in verschiedenen Sprachen installiert wird. In jedem Fall IMMER vorher deinstallieren!

28.06.2004 - 17:31 Uhr

Das Problem hatte ich auch schonmal, und zwar immer dann wenn ich explizit gesagt habe das es ein TextFile wird...

Welche Entwicklungsumgebung benutzt du?

Teste mal ob bei


StreamWriter sw = new StreamWriter(<dateiname>);

... das selbe bei rauskommt.

Ansonsten schaue ich heute abend zu Hause nochmal, da habe ich ein Projekt in dem das speichern von Sonderzeichen in ein TextFile funktioniert.

Gruss,
Ftee

26.06.2004 - 13:10 Uhr

IN der Form setzt du erstmal die ArrayList im Klassenrumpf public:


public class ArrayForm : System.Windows.Forms.Form
    {
    public ArrayList liste;

    public ArrayForm()  {
        InitializeComponent();
        liste = new ArrayList();
    }


    private HierWirdDieListeGefüllt() {
    //
    }
} 

Die Form erstellst du von einer aufrufenden Klasse, wobei du vor dem Darstellen das Closing-Event an eine Mehtode in der aufrufenden Klasse bindest.


public class Caller
{
    ArrayForm af;
    ArrayList speicher;
    
    public Caller() {
        speicher = new ArrayList();
    }

    public AufrufDerForm() {
        af = new ArrayForm();
        af. .Closing +=new System.ComponentModel.CancelEventHandler(ArrayForm_Closing);
        af.ShowDialog();
    }

    private void ArrayForm_Closing(object sender, System.ComponentModel.CancelEventArgs e) {
        this.speicher = (ArrayList)((System.Windows.Forms.Form)sender).liste.Clone();
    }


Wird jetzt ArrayForm geschlossen, wird die Methode ArrayForm_Closing aufgerufen, und die Liste rauskopiert in einen Speicher. Was du damit nun machts bleibt Dir überlassen.

Wie gesagt kannst du dir das ganze Event-Zeugs auch sparen und nur den Kopiercode nach dem ShowDialog() einfügen, aber ich denke so ist das sauberer.

26.06.2004 - 02:11 Uhr

Du kannst auch einfach das gefüllte Object public setzen, und das Close-Event BEVOR du die Form aufrufst in das aufrufenden Classe zuweisen.

Wir die Form geschlossen, wird dabei das Event gefeuert, und du kannst in der Behandlungsroutine dafür die Daten aus dem Form rausnehmen.

Du kannst die auch direct nach dem Closen in der aufrufenden Klasse abfragen, da die Klasse der Form auch nach dem Close erhalten bleibt.

25.06.2004 - 18:56 Uhr

Hallo,

Ich muss hier Code-Hacker deutlich zustimmen.

Klar KANN man das anders machen. Da schöne ist ja, daß immer viele Wege ans Ziel führen.

Aber je strenger man GUI, Core und Data trennt, umso leichter gestaltet sich ein Umbau/Neukonstruktion/Erweiterung der Anwendung.
Je weniger Funktionalität in der Klasse der Form liegt, desto leichter ist es diese den Bedürnissen des Users nach umzugestalten.

Das hat auch nur bedingt was mit OOP zu tun, sondern kristallisiert sich immer mehr heraus, je länger man programmiert.

Der schöne Nebeneffekt ist der ziemlich strukturierte und ubersichtliche Code der in vielen Dateien verteilt in den Ordnern der Solution liegt. 🙂

Klar kann man niemanden Vorschriften machen wie er programmieren soll, aber ch denke das es mehr als ein Denkanstoss gedacht war.

Gruss,
Ftee

25.06.2004 - 09:03 Uhr

Du musst einen globale KeyHook installieren.
Allerdings bin ich mir nicht sicher, wie das mit .NET gehen soll.....

Unter dem Stichwort "KeyHook" "global" "dll" solltest du aber ein paar Sachen bei google finden.

Gruss,
Ftee