Laden...

Forenbeiträge von Coder007 Ingesamt 1.214 Beiträge

01.06.2014 - 17:31 Uhr

Naja, besonders viel Code ist es nicht, also kann man auch nicht so besonders viel dazu sagen. Ich kann dir schon mal Punkte nennen, die mir auf den ersten Blick nicht gefallen:

  • Deine Namensgebung ist nicht standardkonform und sehr ungewohnt. Es gibt gewisse Coding Rules, an die sich die meisten halten. In C# ist Pascal Case üblich, die ersten Buchstaben eines Wortes werden also groß geschrieben, die anderen klein, z.B. Verein oder VereinsTabelle. Parameternamen werden üblicherweise klein geschrieben. Private Variablen könnte man mit einem Unterstrich beginnen.

  • Das ist jetzt mehr oder weniger Geschmackssache, aber ich mag deutsche Bezeichner überhaupt nicht. Wenn du das komplett durchziehst, z.B. "gibPlatz" statt "getPlatz", ist es zwar etwas konsequenter, schaut aber zumindest sehr komisch aus und wird bei längeren Funktionsnamen noch seltsamer, wo man das auf Englisch viel eleganter ausdrücken könnte. Und dann wird es immer inkonsistent sein, weil alle Bibliotheken englische Bezeichner verwenden. Was auch gut ist, weil ich glaub, mit einer Bibliothek, die tschechische oder norwegische Bezeichner verwendet, würdest du auch selber keinen Spass haben. Und die allermeisten deiner möglichen Kollegen werden sowieso Englisch programmieren. Der einzige Grund, mal deutsche Bezeichner zu verwenden ist, wenn man ein domänenspezifisches Programm für einen Kunden schreibt und nur Probleme damit hätte, die ganzen Fachbegriffe sinnvoll zu übersetzen und dann damit zurechtzukommen. Sonst würde ich mir deutsche Bezeichner erst gar nicht angewöhnen.

  • goto ist verpönt, fast schon eine Todsünde.

  • Verwende sinnvolle Parameternamen. Die Parameterliste ist die Schnittstelle deiner Klassen. Was soll sich jemand denken, der die Implementierung nicht sieht, nur einen Parameternamen "UN" oder "NI"?

  • Ich finde, da sieht man ganz gut, dass Konsolenanwendungen für sowas nicht wirklich geeignet sind. Das macht weder beim Programmieren, noch beim Benutzen Spass. Ich würd eher gleich auf Winforms oder WPF umsteigen.

14.04.2014 - 21:40 Uhr

Das geht evtl. wegen unbuffered I/O. Hier ist eine Diskussion drüber:

Fast file write with overlapped I/O

Der Titel ist falsch, weil da von overlapped I/O die Rede ist, habs aber so übernommen, wie es dransteht.

14.04.2014 - 20:16 Uhr

Ich würde mich freuen wenn ihr das Programm testen würdet und mir eure Meinungen
mitteilen würdet, da es mein erstes "richtiges" Programm ist. 😃

Naja, das ist schon ein sehr einfaches Programm. Erwarte hier nicht zu viel Feedback. Ich weiß auch nicht, was dir das Feedback nutzen würde. Ich denke, da ist einfach zu wenig dahinter um zu sagen, das war jetzt gut oder das war jetzt nicht so gut.
Vielleicht kannst du das Programm mit der Zeit noch stark ausbauen (schau dir an, was ähnliche Programme können), in sowas kann man noch etliche Funktionen einbauen (völlig spontan, z.B. Verschlüsselung, Anhänge, Reminder, formatierter Text, Links, Verknüpfungen zu anderen Programmen und Diensten usw.)
1,3 MB finde ich jetzt übrigens nicht wenig. Das ist natürlich auch nicht viel, aber das ist nichts, wo ich "nur" davor schreiben würde 😉

02.04.2014 - 20:40 Uhr

@Spyke: was du schreibst hat überhaupt nichts mit der Frage zu tun.

So verkehrt finde ich die Frage nicht. Ich bin mit der Situation in .NET auch noch nie glücklich gewesen. Im Endeffekt gibt es keinen vollwertigen Ersatz für einen OLE Container. Der WebBrowser ist kein Ersatz dafür. Und dieser "OLE container surrogate" ist überhaupt kein "surrogate", sondern nur ein Hoster für PreviewHandler, was je nach Anforderung überhaupt kein Ersatz für einen OLE Container ist. Und der TE hat ja auch schon geschrieben, dass er die Dokumente bearbeiten möchte.
Also, meine Antwort wäre, nein, es gibt keinen gleichwertigen Ersatz, nur ein paar Workarounds die in dem einen oder dem anderen Fall funktionieren.

31.03.2014 - 22:19 Uhr

Für mich persönlich wäre Home Office nichts. Ich habe das Problem, dass meine Gedanken ständig abschweifen. Ich würde mich irgendwann dabei erwischen, dass ich seit einer halben Stunde an etwas völlig anderes denke, dann 2 Sekunden arbeiten und wieder an was völlig anderes denken... Ich brauche meist eine gewisse "Arbeitsatmosphäre" um mich herum, damit ich mich auf meine Arbeit konzentrieren kann.
Gibt allerdings auch Tage, wo ich gern die Freiheit hätte, einfach zu Hause zu bleiben und am Notebook zu entwickeln. Wenn ich einfach müde bin und keine Lust habe, früh aufzustehen (gut, dass muss ich tatsächlich nicht, ich kann kommen und gehen, wann ich will) und zur Arbeit zu fahren.

26.03.2014 - 00:05 Uhr

So ganz klar ist mir auch nicht, was du machst. Wenn du die Daten eh binär in einer Datei speicherst, kannst du auch DateTime verwenden. Das ist intern auch nur ein long, der die Anzahl der Ticks ab einem bestimmten Datum speichert. Brauchst es ja nicht als String speichern.

25.03.2014 - 20:40 Uhr

Daher sollte man meiner Meinung nach für das Datum drei Int32 verwenden, dann hat man diese ganzen Probleme gar nicht.

Intern könntest du das Datum z.B. auch als Unix Timestamp darstellen, dann brauchst nur einen long.

20.03.2014 - 23:37 Uhr

Er enwickelt mit Embarcadero C++.

Also, ich würde sagen, damit wäre er bei "richtigen" C++ Entwicklern genauso beliebt und geschätzt wie ein VB Entwickler unter Linuxern. Der C++ Builder ist ein Nischenprodukt und die VCL ähnelt in keinster Weise idiomatischem C++. Man muss sich schon wirklich gut auskennen, um damit brauchbares C++ zu schreiben, weil die ganzen Umgebung das eher behindert und nicht fördert. Aber wenn man sich gut auskennt, gibts auch keinen Grund, das zu verwenden.
Daher bin ich mir ziemlich sicher, dass die destruktive Haltung von deinem neuen Kollegen nicht auf geballter Kompetenz beruht.

06.03.2014 - 21:08 Uhr

Was brachte nichts? Hast du den Inspector zum Laufen bekommen? Wenn du einen Pfad angibst, den Webkit nicht laden kannst, kriegst da ziemlich sicher eine entsprechende Ausgabe.
Sonst gibts evtl. noch irgendwelche Optionen, was Webkit in welchem Fall laden darf.
Und du könntest natürlich in Webkit reindebuggen. Das ist nicht ganz einfach, ich weiß. Aber es geht. Vor allem mit deren Netzwerkcode kenn ich mich mittlerweile einigermaßen aus.

05.03.2014 - 20:53 Uhr

Webkit.NET? Mir war bisher gar nicht bewußt, dass es einen .NET Port gibt, ich habs nur vermutet.
Ich muss mich ziemlich oft mit der Qt Variante von Webkit rumschlagen. So spontan kann ich dir nur sagen, dass es ganz sicher geht. Warum es nicht geht, kann ich dir so sponan nicht sagen. Gibt der Inspector irgendwas aus?
Vielleicht bist du im falschen Modus. Je nachdem, was für eine HTML Variante Webkit hier vermutet (du hast ja keinen Doctype), kann die Syntax falsch sein. Ich bin z.B. schon mal über das Problem gestolpert, dass Webkit <script /> nicht akzeptiert hat und unbedingt <script></script> haben wollte.

28.02.2014 - 20:02 Uhr

Das ist jetzt natürlich keine genaue Fehlerbeschreibung, so wird dir keiner weiterhelfen können. Du solltest schon genau zeigen, was du gemacht hast und was nicht funktioniert hat.
Selber habe ich das aber auch noch nicht benutzt, würde dir da jetzt also auch nicht unbedingt weiterhelfen können. Ich meine nur von der Beschreibung her, dass es funktionieren müsste. Wenn nicht, wirds schwierig. Sonst könnte ich mir eigentlich nur API Hooking vorstellen, und das wird wesentlich komplizierter und sowas macht man in normalen Anwendungen auch nicht.

27.02.2014 - 22:52 Uhr

Könnte über WMI gehen, schau dir mal Win32_ThreadStartTrace an.

27.02.2014 - 20:23 Uhr

In den 4 Wochen sind sowohl Planung, Umsetztung und Dokumentation einberechnet (ca. 90 Seiten).

Meine Diplomarbeit hatte keine 90 Seiten, und dafür hab ich schon deutlich länger als 4 Wochen gebraucht 😃

26.02.2014 - 21:43 Uhr

Da gibts eine ähnliche Frage auf englisch:

Change default audio device on Windows 7

25.02.2014 - 20:24 Uhr

Das ist meine Aufgabe, dafür habe ich 4 Wochen Zeit

Hast du 4 Wochen Zeit, dich vorzubereiten, oder für das gesamte Projekt? Ein 4 Mannwochen Projekt würde ich jetzt nicht als "riesig" bezeichnen, das ist schon sehr überschaubar. Allerdings reicht deine Beschreibung auch nicht aus, um den Umfang abzuschätzen. So grundsätzlich sind WMI, Datenbanken und Webservices nichts besonderes, kriegt man sicher in paar Wochen hin. Andererseits kann es bei so einem Projekt sicherlich auch sehr viele andere Anforderungen geben, sodass es sich insgesamt um Mannjahre Arbeit handeln könnte.

14.02.2014 - 20:48 Uhr

Von Durchnummerieren halte ich nichts.
Ordner innerhalb von "Projekten" einzusetzen finde ich hingegen völlig natürlich, habe ich schon immer so gemacht. Wie man das dann konkret aufbaut ist natürlich eine andere Frage. Bei uns in der Arbeit ist es etwas extrem, würde ich so nicht unbedingt weiterempfehlen (ist aber C++, da ist es nicht so einfach und üblich, für alles gleich ein eigenes Projekt zu machen). Wir haben zwar insgesamt mehrere hunderte Projekte in der Mappe, je nachdem was man alles lädt vielleicht so 350, aber der meiste Code ist in nur vier großen Projekten mit insgesamt so 2 Mio Zeilen. Da kommt prakitsch alles rein, was man an mehreren Stellen braucht oder brauchen könnte, außer es ist sehr speziell. Die Projekte selber enthalten sehr viel Unterverzeichnisse. Funktioniert vom Handling her aber relativ gut, wir haben eigentlich keine Probleme, irgendwas neues unterzubringen oder etwas vorhandenes wiederzufinden.

11.02.2014 - 20:37 Uhr

Meine Bedenken waren wohl unbegründet, die iterative Variante hat in allen Tests bisher ganz gut funktioniert. Danke für den Tipp!
Ich kann ja noch als Absicherung eine Prüfung einbauen, ob ein Verschiebungsvektor genau in die entgegengesetzte Richtung eines anderes Verschiebungsvektors zeigt, den ich auf einen Polygon schon mal angewendet hatte.

10.02.2014 - 20:33 Uhr

Bei Punkt 3 würde ich die Polygone immer nur ein Stück auseinander schieben, egal ob es dadurch zu neuen Überschneidungen kommt bzw. sich die Überschneidungen insgesamt vergrößern. Trotzdem sollte man die Polygone natürlich möglichst in passende Lücken verschieben. Wenn es mehrere Stellen mit Überschneidungen gibt, würde ich das Polygon zuerst verschieben, das am nächsten an seiner Ausgangsposition liegt.

Ich habe die Befürchtung, dass es dann bei Polygonen, die genau zwischen zwei anderen liegen immer hin- und hergeht.
Die Idee, das Polygon zu verschieben, das näher an seiner Ausgangsposition liegt, finde ich interessant. Da muss ich noch etwas rumexperimentieren.

09.02.2014 - 22:04 Uhr

Ich habe nur konvexe Polygone, habe ich vergessen zu erwähnen.
Wenn etwas nicht mehr ins Rechteckt passt, werde ich das ganze runterskalieren müssen. Nicht schön, aber das wäre etwas, was man später evtl. verbessern könnte.
Dass Polygone komplett ineinanderliegen ist unwahrscheinlich, aber wohl nicht unmöglich. Ich denke, damit muss ich erstmal leben.

09.02.2014 - 19:20 Uhr

Das klingt aber gar nicht mehr nach "die ursprüngliche Verteilung und Positionierung aber möglichst unverändert lassen" 😃

Wieso? Ich wil eben die ursprüngliche Verteilung haben, nur ohne die Überschneidungen, die ich durch paar Verschiebungen loswerden will.

Ich denke, ich versuch mal einen naiven Algo:

  1. Alle Polygone durchgehen
  2. Paarweise Überschneidungen mit den bereits verarbeiteten Polygonen untersuchen.
  3. Wenn es eine Überschneidung mit einem anderen Polygon gibt, den aktuellen Polygon verschieben (entlang der Senkrechten, die auf der Geraden zwischen den Schnittpunkten steht).
  4. Wenn es entlang dieser Geraden Überschneidungen mit anderen bereits verarbeiteten Polygonen gibt, werden auch die in die entsprechende Richtung verschoben, und alle "abhängigen" Polygone auch.

Kann man sicher noch optimieren, aber ich denke, das müsste im Prinzip funktionieren. Da ich insgesamt nicht so viele Objekte haben werde, dürfte die Performance auch noch ausreichend sein.

Wenn es hier aber bessere Ideen gibt, wär ich nach wie vor interessiert 😃

09.02.2014 - 17:33 Uhr

Wie genau unterscheidest du zwischen einer optimalen Verteilung und einer optimierten Verteilung?

Wenn man eine optimale Lösung haben will, ist es egal, wie die Objekte am Schluß verteilt sind, man will möglichst wenig Verschnitt haben. Ich will nur die Überschneidungen loswerden, der Verschnitt ist mir egal.

09.02.2014 - 17:00 Uhr

Ganz so kompliziert ist es bei mir aber nicht. Mir gehts wie gesagt nicht um eine optimale Verteilung, sondern "nur" darum, die bereits vorhandene Verteilung zu optimieren. Ich denke, AutoNester ist hier schon deutlich komplizierter.

09.02.2014 - 16:35 Uhr

Aber was genau meinst du mit "nur durch Translation aufzulösen"?

Nur durch Translation = nur durchs Verschieben, keine Rotationen. Ich will die Polygone so verschieben, dass keine Überschneidungen mehr übrig sind.
Das finden der Überschneidungen an sich ist nicht das Problem, ich würd einfach boost::geometry nehmen, die werden das schon hoffentlich effizient umgesetzt haben.

Ja, das erinnert ganz eindeutig an das Rucksackproblem. Der Unterschied ist nur, dass bei mir bereits eine Verteilung gegeben ist und ich nicht eine optimale Verteilung suche, sondern eine, die möglichst nahe an der ursprünglichen Verteilung bleibt.
Spring Embedding schaut auf jeden Fall auch interessant aus, aber ich glaube, es wird schwierig, das für meinen Anwendungsfall anzupassen bzw. ich seh noch nicht.

08.02.2014 - 22:18 Uhr

Hi,

ich habe eine Menge von Polygonen, die innerhalb von einem Rechteck angeordnet sind. Dabei können die sich beliebig überschneiden. Kennt jemand einen Algorithmus, um die Überschneidungen zwischen den Polygonen nur durch Translation aufzulösen? Dabei will ich die ursprüngliche Verteilung und Positionierung aber möglichst unverändert lassen.

27.01.2014 - 21:31 Uhr

Ich wollte grad etwas vorschlagen, was du schon in deinem ersten Beitrag selber als Idee vorgeschlagen hast. Ich denke, wenn es nur darum geht, Farbwerte zu verändern, könnte die Idee durchaus funktionieren.
Herbivors Vorschlag geht eigentlich in eine ähnliche Richtung. Ich weiß nicht, obs signifikate Unterschiede geben würde und was besser funktioniert, müsste man mal ausprobieren.

26.01.2014 - 21:32 Uhr

Ich kenne mich damit nicht wirklich aus, das meiste was ich darüber weiß, weiß ich aus eben diesem c´t Artikel. Ich kann mir aber nicht vorstellen, dass die Währung sich wirklich durchsetzen wird:

  • Man verschwendet unglaublich viel Energie, um Probleme zu lösen, die keiner hat. Eigentlich müsste man das verbieten.
  • Dieses Wettrüsten der Mining Hardware wird wahrscheinlich auch in eine Sackgasse führen
  • Ich sehe jetzt auch nicht, dass sich das ganze großartig durchgesetzt hätte. Damit kann man in einem dutzend kleiner Läden in Berlin zahlen, toll. Verstehe die Motivation von den Ladenbesitzern auch überhaupt nicht.
15.01.2014 - 00:05 Uhr

Ich bin mir auch nicht sicher, ob das C++ Compiler tatsächlich sooft tun, wie du das behauptest. Oder verwechselst du das mit Inlining?

Ist natürlich die Frage, was man hier als oft sieht und kommt auf den Code an, wie gut das klappt. Ich schau mir ab und zu den Assembler Code an, der generiert wird, und C++ Compiler betreiben wesentlich aggressivere Optimierungen, als nur Inlining. Ist aber zumindest für mich sehr schwer einzuschätzen, ob etwas tatsächlich wegoptimiert werden kann oder ob der Compiler das doch nicht sieht. Verlassen kann/sollte man sich auf solche Optimierungen nicht.

14.01.2014 - 20:42 Uhr

Ich finde das Thema nicht uninteressant. Ein C++ Compiler darf sowas weg optimieren und macht das öfters auch. Natürlich gilt dabei alles, was herbivore gesagt hat, also der Compiler muss erkennen können, dass die Funktion keine Seiteneffekte hat. Dazu muss die Funktion sich aus in demselben Binary befinden, bei exportierten Funktionen kann ein Compiler natürlich nicht viel machen. Aber wenn er den Code von der Funktion kennt, kann er unnötige Funktionsaufrufe sehr oft wegoptimieren.
Wie gut der "C# Compiler" hier optimieren kann, weiß ich aber auch nicht.

Edit: wenn, dann ist wohl eher der JIT Compiler für sowas zuständig.

11.01.2014 - 16:03 Uhr

Könntest du ein paar Screenshots anhängen?

08.01.2014 - 20:22 Uhr

Versuchs erstmal mit einem Array.

08.01.2014 - 20:20 Uhr

Siehe auch Grundlagenforschung des Windows Explorers bei der Ordneranalyse (Schnittstellen)

Anscheinend ist Abt hier schon über Grundlagenforschung hinaus und will das in die Praxis umsetzen 😉

05.01.2014 - 22:21 Uhr

Lies nochmal, was ich geschrieben habe.

05.01.2014 - 18:47 Uhr

Das wird kompliziert, wenn du alle wichtigen Rastergrafikformate unterstützten willst.

Ich kenne ImageMagick.NET jetzt nicht und ich kann nicht einschätzen, ob das was du damit gemacht hast nicht vielleicht falsch ist, oder ob das am Wrapper, an der Version, oder an sonst was liegt. Aber grundsätzlich sollte ImageMagick schon ziemlich schnell sein, die Software ist ziemlich bekannt und wird auch aktiv entwickelt. Deswegen würde ich mal die neueste Version installieren und damit etwas auf der Kommandozeile rumspielen, um die Ergebnisse zu vergleichen. Wenn das brauchbare Ergebnisse liefert, kannst du ja vielleicht die API etwas genauer untersuchen, ob das nicht irgendwie schneller geht. Oder ob du das nicht auch vielleicht irgendwie anders einsetzen kannst.

02.01.2014 - 16:17 Uhr

die großen Unterschiede in der Bedienung von Metro Apps per Finger oder per Maus

als auch überhaupt dem Vermischen des bisherigen Layouts und Bedienkonzepts (Dektop) mit dem Metro-Layout und -Bedienkonzept (Kacheln)

dass der Windows-Explorer (Desktop) Dateien standard-mäßig in (Metro-)Apps öffnet, statt in einer Desktop-Anwendung

die strikte Trennung zwischen "Metro" und Desktop, also dass man Apps nicht in einem Fenster auf dem Desktop laufen lassen kann

dass man auch auf riesigen Bildschirmen nur max. 2 oder 3 Apps nebeneinander laufen lassen kann.

usw. ?

Zumindest für mich sind diese Punkte in der Praxis nicht wirklich relevant, bzw. stören nicht weiter. Ich denke aber, dass sie für Neulinge doch mehr Relevanz haben könnten:

  1. Ich habe kein Tablet / Windows-Phone und deswegen weiß ich auch nicht, wie man sie mit dem Finger bedient. Mag also in der Tat ein Nachteil sein, dazu kann ich nichts sagen.
  2. Für mich als Poweruser ist das Vermischen von Bedienkonzepten nichts neues und da ist Windows nicht ausschlaggebend. Wir entwickeln Software im Maschinenbaubereich und ich habe mehrere CAD Systeme auf dem Rechner, mit denen ich immer wieder was testen muss. Die Bedienkonzepte von z.B. CATIA und NX oder SolidEdge sind dermaßen unterschiedlich, dass mir das etwas inkonsistente Verhalten von Windows überhaupt nicht auffällt 😃
  3. Das mag für PC Neulinge relevant sein, aber jeder der sich etwas auskennt, wird eigene Programme einstellen. Ich glaube nicht, dass ich irgendein Default Programm verwende.
  4. Ich nutze in der Tat kaum Apps, die meisten Proramme, mit denen ich intensiv arbeite, sind nach wie vor Desktop Programme. Bei den paar Apps, die ich ab und zu benutze, stört das nicht wirklich.
01.01.2014 - 17:08 Uhr

Ich war früher eher skeptisch, benutze in der Arbeit jetzt rund ein halbes Jahr Windows 8 und seh das jetzt so ähnlich wie FZelle, es gibt jetzt mehr Möglichkeiten und nicht weniger. Der Punkt ist, dass mir zumindest nichts negativ aufgefallen ist. Ich kann mit Windows 8 genauso produktiv arbeiten wie mit Windows 7, und das Startmenü find ich tatsächlich sogar besser. Den Desktop gibts nach wie vor, und wenn ich jetzt die Windows Taste auf der Tastatur drücke (habe den Startknopf eh ganz selten mal mit der Maus angeklickt), dann geht halt die Kachelansicht auf, und die ist übersichtlicher als das Startmenü.

18.12.2013 - 22:16 Uhr

Musst du dich unbedingt für eine Datenbank entscheiden? Wäre eigentlich besser, möglichst datenbankunabhängig zu bleiben und eine Zwischenschicht wie ORM zu verwenden. So ganz habe ich nicht verstanden, was du genau machen willst. Es macht schon einen Unterschied, ob es ein Spezialauftrag für einen Kunden ist, oder ob ihr das als eigenes Produkt für mehrere Kunden anbieten wollt. Wenn mehrere Kunden das verwenden sollen, wäre es auf jeden Fall besser, die Datenbank austauschen zu können. Wenn es nur um einen Kunden geht, lohnt sich der zusätzliche Aufwand einer Zwischensicht nicht. Kommt auch drauf an, wie stark du verschiedene Datenbankfeatures nutzen willst. Wenn die gesamte Anwendungslogik in deinem Programm bzw. in einem Application Server implementiert ist und die Datenbank wirkilch nur für die Ablage von Daten dient, sollte sich das DBMS relativ leicht austauschen lassen. Wenn du aber mehr Logik in der Datenbank implementieren willst, und sowas wie Trigger, Stored Procedures, Notification Services, Message Queues und sonst was nutzen willst, wirst du die Datenbank natürlich schlecht austauschen können.

Was sind für dich "riesige Datenmengen" und wer soll sich um die Datenbank kümmern? Oracle ist sehr mächtig, aber damit muss sich jemand auskennen, sonst kann das auch leicht mal schnell "kaputt gehen" und ist dann sehr langsam, und man sieht erstmal nicht warum. Wir hatten mal einen Kunden, der wenn ich mich recht erinnere Tabellen mit 15 Mrd Einträgen in der Oracle Datenbank hatte. Und die hatten extreme Performance Probleme, und irgendwann haben sie es dann doch auf die Reihe bekommen, aber deren Admins haben das nicht geschafft.

Bei unserer Software ist die Datenbankanbindung eher nebensächlich, wir arbeiten im Maschinenbaubereich. Da ist aber wichtig, dass man die Datenbank austauschen kann. Wir haben nur große Kunden, und die haben alle eine IT Abteilung und irgendeine Datenbank, und da wärs ganz schlecht, wenn wir vorschreiben würden, was für eine Datenbank die verwenden sollen. Praktisch müssen wir nur Oracle (die meisten Kunden) und den SQL Server (grob geschätzt 20%) unterstützen, nur ein Kunde hat DB2, sonst kenne ich nichts.

12.12.2013 - 21:29 Uhr

Ich geh stark davon aus, dass das Encoding von der Gegenseite vorgegeben ist. Wenn die Software uralt ist, ist es wahrscheinlich kein UTF8. Am besten wärs in der Doku nachzuschauen, was die verwenden, aber eine Doku hast du wahrscheinlich nicht mehr?

Ich möchte noch erwähnen, dass ich DDE nicht für "völlig überholt" halte. Das ist nicht sehr leistungsfähig, aber es ist eine einfache Schnittstelle, die man auch leicht zum Verbinden von verschiedenen Programmen verwenden kann (z.B. Texnic Center und einen PDF Viewer). Das ist auf jeden Fall um Welten einfacher als COM und für einfache Anwendungsfälle reicht es eigentlich völlig.

11.11.2013 - 20:03 Uhr

Ja.. Ganz ehrlich, vor 10 Jahren hat man auch schon mit Eclipse gearbeitet 😉 Das reicht locker, vor allem mit einer SSD sollte Eclipse nicht so ewig lang zum Laden brauchen.

06.11.2013 - 21:42 Uhr

Das wird so nicht gehen. Dafür müsstest du schon eine Shell Extension schreiben, gibt auch genug Beispiele bei Codeproject. z.B. hier:

.NET Shell Extensions - Shell Context Menus

04.11.2013 - 21:07 Uhr

@CSharperUser: das hört sich theoretisch interessant an, könntest du vielleicht etwas mehr darüber erzählen? Ich finde nur sehr allgemeine Aussagen, nichts konkretes über den Inhalt.

02.11.2013 - 22:31 Uhr

Weiß jetzt auch nicht, ob Spy++ bei der Express Edition dabei ist, ich dachte zumindest bei neueren Versionen wärs dabei.
Sonst gibts z.B. WinSpy++ oder Winspector.

Wo siehst du die Exceptions?

02.11.2013 - 17:39 Uhr

IntPtr windowHandle = new IntPtr(FindWindow("solitaire", "solitär"));

Warum new IntPtr? Gibt doch schon eins zurück.

Debugg da einfach mal rein. Was gibt dir FindWindow für ein Handle zurück, ist es das richtige? Das kannst du mit Spy++ überprüfen. Ändert sich der Window Style nach dem Funktionsaufruf? Kannst du ebenfalls mit Spy++ überprüfen.

01.11.2013 - 22:29 Uhr

Ich nehme an, das ist dasselbe, was subst macht. Also einfach subst eingeben und schauen, obs da in der Liste auftaucht.

Ansonsten mal in der MSDN unter DefineDosDevice schauen, da findest du sicher alle Informationen, die du brauchst.

31.10.2013 - 16:25 Uhr

Du könntest vielleicht einen Rahmen definieren, aber das geht wenn überhaupt nur um ganze Absätze:

PARAFORMAT2 Structure

Aber wenn ich mich recht erinnere, kann das Rich Edit den Rahmen nicht darstellen. Was aber geht, sind Tabellen.

Hilft dir aber wahrscheinilch auch nicht weiter. Ich glaub nicht, dass du hier viele Möglichkeiten hast. Selbst selber zeichnen ist bei einem Rich Edit nicht einfach.

27.09.2013 - 13:55 Uhr

Probiers einfach mit String, ich glaub, .NET kriegts auf die Reihe.

27.09.2013 - 13:03 Uhr

Warum bzw. was muss ich anders machen ?

Wie ich schon gesagt habe, die C++ Funktion erwartet einen gültigen ns1__UnlockConnectorRequest Zeiger. Keinen IntPtr.
Du musst die Struktur in C# genauso definieren, wie sie in C++ definiert ist. Die muss genauso viel Speicher brauchen. Dann musst du den Speicher dafür reservieren und den Zeiger an die C++ Funktion übergeben.

26.09.2013 - 17:09 Uhr

Der C++ Code erwartet einen gültigen Zeiger. Das ist kein out Parameter. Du musst den Speicher selber reservieren und an die Funktion übergeben.
Außerdem finde ich die Deklaration von deinem Request Objekt schon sehr seltsam...

public readonly object req;

Du erwartest doch nicht wirklich, DAS von einer C++ Funktion zu bekommen?

24.09.2013 - 22:08 Uhr

Wie schaut der Code in Delphi aus, wie ist die Schnittstelle deklariert?

23.09.2013 - 18:19 Uhr

Geht das vielleicht auch irgendwie eleganter?

Du bist weder auf meinen noch auf herbivoirs Beitrag genauer eingegangen, von dem her ist es schwierig zu sagen, ob da nichts für dich dabei war, oder ob du vielleicht was übersehen hast.

20.09.2013 - 20:19 Uhr

Das müsste mit einer der Marshal Methoden gehen. Meine .NET Kenntnisse sind leider etwas eingerostet, schau einfach in der Doku nach, was es da so für Methoden gibt.
Für Arrays gibts in COM die SAFEARRAY Struktur. Typisierte Arrays kann man ja schlecht definieren, deswegen sind die Daten eben void*. Allerdings bin ich mir ziemlich sicher, dass du bei der Deklaration der Methodensignatur in C# angeben kannst, was das jetzt konkret ist und wie das gemarshallt werden soll. Schau dir MarshalAs usw. an. Bzw. könnte es vielleicht schon reichen statt

out object Inhalt

sowas wie

out MyRecordType[] Inhalt

anzugeben.