hab den Leistungskiller gefunden! Hab in der foreach-Schleife zusätzlich zu jeder Datei einen Statusbalken aktualisiert. Hab den jetzt raus genommen, und jetzt geht das rasend schnell
</Exit> schrieb:
Hi Proggas!
Ich wollte mal wissen worin der (Haupt-) Unterschied zwischen C++ und C# besteht. (ja ich hab schon die Suchfunktion benutzt aber es kam nix raus... :()
Ganz einfach, C# ist einfacher zu erlernen
Grüße Stipo
Ja natürlich, dafür ist C++/CLI doch da. Du brauchst einfach nur eine Referenz auf die C++/CLI-DLL in Deinem C#-Projekt anlegen.
EDIT:
Ergänzend sei vielleicht angemerkt dass die Klassen die Du (ohne Marshalling) von C# aus nutzen willst natürlich managed sein müssen.
Stimmt, ja! damit könnte IEnumerable aug IEnumerable<object> zurückfallen.
Du hast mich aber noch auf eine Idee gebracht:
class Enumerator<TDst>
{
public static IEnumerable<TDst> From<TSrc>(IEnumerable<TSrc> src, Mapper<TSrc, TDst> mapper) { ... }
public static IEnumerable<TDst> From(System.Collections.IEnumerable src, Mapper<object, TDst> mapper) { ... }
Damit wird der caller-syntax ein bißchen hübscher, da C# den TSrc-typen automatisch ableiten kann:
Data[] list = new Data[] { new Data(), new Data(), new Data() };
foreach(int x in Enumerator<int>.From(list, delegate(Data obj) { return obj.x: });
danke
edit - unsinn ausgebaut...
hallo leute
wir haben ein C# projekt, mit welchem wir auf ein COM-objekt zugreifen wollen.
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.IO;
namespace SamController {
class Program {
static void Main(string[] args) {
SAMLIGHT_CLIENT_CTRL_OCXLib.ScSamlightClientCtrl samlight =
new SAMLIGHT_CLIENT_CTRL_OCXLib.ScSamlightClientCtrl();
if (samlight.ScIsRunning() == 0) { //(1)
Console.WriteLine("SamLight is not running");
return;
}
Console.WriteLine("SamLight is running");
// samlight.ScChangeTextByName("VarText", "Andras");
Console.ReadKey();
}
}
}
unter Projekt->Verweis hinzufuegen wurde SAMLIGHT_CLIENT_CTRL_OCXLib hinzugefuegt. wenn ich das programm starte bekomme ich dann eine Exception in zeile (1):
Eine nicht behandelte Ausnahme des Typs "System.Runtime.InteropServices.COMException" ist in mscorlib.dll aufgetreten.
in einem VB .NET programm, mit ner Form, funktioniert es einwandfrei.
da wurde die ocx irgendwie mittels der form eingebunden.
haben is uebrigens auch mal mit VBS probiert. hatte auch nicht funktioniert.
kann sich einer vorstellen wo da der fehler liegen koennte ?
Meep Meep
Mittels Form.Controls kommst du an alle Controls des Formulars. Du mußt evtl. bei Gruppencontrols dann wiederum rekursiv diese Subcontrols durchlaufen.
Zerberus, danke und entschuldige, dass ich so spät antworte. Eine nette und von der Idee her sehr gute Lösung (ich bin nicht drauf gekommen). Nur mit der Methode wird immer der MinValue-Wert gesetzt. Ich hab jetzt die Lösung:
Contact.Birthday = Convert.ToDateTime("01.01.4501");
Warum auch immer das so richtig ist, muss ich mal probieren rauszufinden, da ja eigentlich der MaxValue-Wert überschritten ist, aber da hat man sich wohl ein Hintertürchen offen gelassen. Warum ich da nicht früher darauf gekommen bin, war, dass ich als Rückgabewert von kein Datum bei der Formatierung dd.MM.yy verwendet habe und das als 01.01.2001 interpretiert habe (über diesen Wert steht was in der Hilfe). Voila jetz funktionierts. Damit ist jetzt auch wieder ein Null-Date TimePicker zu realisieren.
Gruss
Warum schreibst du nicht:
public string Test<T>(string a, string b)
{
a = b;
return b;
}
diese methode soll verschiedene typen zurückgeben (je nach dem von welcher methode sie aufgerufen wird)
Ich bin mir nicht sicher, aber es klingt als möchtest du ein String-Objekt in z.B.: einen Integer oder DateTime-Objekt konvertieren? Wenn ja nimm lieber System.Convert.To... (setzte für ... den Typ ein in den du konvertieren möchtest - vorausgesetzt er ist ein Standardtyp).
Mit freundlichen Grüßen
Rhombicosidodecahedron
Hallo zusammen,
hallo muss erst mal sagen, dass ich ein C# Anfänger bin.(habe früher was in C++ was gemacht)
ich habe ein Programm (C#_exe) geschrieben, welches auf eine Anwendung „CApp“ als COM-Server zugreift. Die Kommunikation zwischen den beiden Programmen funktioniert soweit so gut. Das Problem ist noch folgendes: Wenn ich auf ein Ereignis in der EventHandler-Routine reagiere, welches in der Anwendung „CApp“ ausgelöst worden ist, kann ich leider NUR schreiben, Funktionen bzw. Attribute manipulieren, die zur Anwendung „CApp“ gehören. Es werden aber meine C#_exe Funktions-Aufrufe bzw. Ausgaben NICHT ausgeführt . Folgende Snippet schildert die Situation:
void CAppObj1_OnChange(object Value) // EventHandler
{
CApp.CAppObj2.write(" hier wird dieser Text in Capp ausgegeben"); // diese Anweisung wird ausgeführt
meinOnEventFunktion(); // !!!!!!wird NICHT ausgeführt ??????
textBox1.Text = "event_Hallo";// !!!!!!wird NICHT ausgeführt ??????
throw new Exception("The method or operation is not implemented.");
}
was soll ich machen, damit meine Funktionen in der Ereignisbehandlungsroutine aufgerufen werden
ich bin auf eure Hilfe angewiesen
vielen Dank
Hi,
ich möchte, wie schon in der Überschrift beschrieben, die Größe meines MdiChilds an die Größe des Arbeitsbereiches meines MdiParents anpassen. Wenn ich die Größe des Childs mit der Größe des Parents gleichsetze, dann habe ich natürlich das Problem, dass ich immer scrollen muss im Parent Fenster. Genau das will ich aber verhindern. Das Child soll aber nicht maximiert werden!
Ich hoffe ihr könnt mir helfen.
EDIT: Ok, bin jetzt drauf gekommen . Mit Child.Dock = DockStyle.Fill.
Hallo,
ich hoffe ihr könnt meine Newbie-Frage beantwort:
Ich habe eine DLL geschrieben´. Das Assembly habe ich COM-sichtbar gemacht und den Haken bei "COM-Interop registrieren" auch gesetzt. Funktioniert alles super. Ein Testprogramm mit dem Cpp-Builder geht auch einwandfrei.
Mein Problem ist jetzt, dass auf meinem Entwicklungsrechner die DLL und das Testprogramm ncht in einem Verzeichnis sind - funktioniert. Auf dem Zielsystem allerdings bekomme ich eine "Datei nicht gefunden"-Meldung, wenn ich die Verzeichnisse eins zu eins kopiere! Die DLL habe ich über "RegAsm.exe Testdll.dll /codebase" regiestriert.
Kopiere ich die DLL ins Verzeichnis der Testanwendung, dann klappt alles. Was mache ich falsch oder habe ich einen Gedankenfehler?
Danke,
Ingo
Puhh, wozu braucht man son großen Integer?
Ausser Kryptographie fällt mir da nix sinnvolles ein. Wäre in dem Fall sicher
interessant, aber glaub dann parken irgendwann vor meiner Wohnung einige
Lieferwagen mit Getöhnten scheiben und rotierender Antenne auf dem Dach.