d.h wenn ich einen SxS error habe, sollte ich schauen, ob die .DLL bereits im WinSxS ordner ist?
Hallo,
eben gerade wollte ich für meine Software ein neues Release erstellen. Als ich es dann auf einen Nicht-Entwicklungsrechner starten wollte, bekahm ich beim laden einer DLL eine "Sidy-by-Side" Fehlermeldung. Diese Meldung hatte ich bei meinen vorherigen releases nicht!
Nach forschen im Internet fand ich dann eine Lösung: Es fehlte ein Ordner (aus dem VS 8 Verzichniss).
Nun stelle ich mir die Frage:
Was genau ist ein Side-by-Side Konfiguration fehler? Alle teile meines Programm sind mit "x86" compiliert.
Und warum benötigt diese software auf einmal dann diese weiteren DLLßs?
Gruß Stu
PS: Unter windows XP lief das programm so. Nur unter VIsta wird noch diese Unterordner mit 3 dlls benötigt.
joa das hab ich mir auch gedachte, nur mit einer BasisKlasse.
Aber dann hätt ich noch eine DLL mehr.
Aber ich hab gerade erfahren, das man eine Funktion mit MethodInfo.Invoke aufrufen kann.
Ich werde dann einfach nach den Funktions namen suchen.
Hallo,
ich möchte mir für mein Programm Treiber .DLL´s schreiben. Also eine DLL die einen bestimmt typ für jedes Gerät neu implementiert.
Wenn ich in der Treiner DLL nun eine Klasse definiere, muss ich sie ja in meinem Programm dynamisch laden.
Nun dachte ich mir folgendes:
Ich definiere eine Basisklasse, von der meine Dll-Treiber-Klassen erben.
Dann lade ich das Assemly dynamisch, suche mir die klasse raus die von meinem Basistyp erbt, erzeuge sie und spreche sie über den Basistypen an.
Problem:
Wie bekomme ich die Basisklasse in mein Programm UND in meine DLL?
einfach die Klasse in beide Projekte kopieren geht nähnlich nicht.
Nun dachte ich, ich lade die dll, und durchsuche sie nach klassen die bestimmt Methoden namen haben.
Aer nun stehe ich vor folgendem Problem:
Wenn ich eine Klasse gefunden habe die bestimmt Methodennamen implementiert, wie rufe ich die Methoden dann auf? denn wenn ich mir mir Activator.CreateInstance eine Instanz erstelle, so bekomme ich object zurück. Und bei einem Object kann ich ja nicht die spezielle Methode aufrufen.
Also wie löse ich das problem mit den Software Treibern jetzt am besten? Eine DLL erstellen die nur den Basistyp enthällt?
Gruß Stu
joa das mit dem Wave in den speicher schreiben werd ich mal probieren.
Wenn ich das mit dem wave format richtig sehe, dann ist ein "Sample" quasi ein Spektrum, also mehrere Signale, die dann einfach an ein andere gefügt sind.
Oder hab ich da nen denk fehler gemacht?
Hallo,
wenn ich das richtig verstehe, dann bestehen Klänge aus einer Abfolge von Audio Spektren.
Gibt es eine möglich sein eigenes Spektrum (bzw mehrere) auf der soundkarte auszugeben?
Gruß Stu
ja das ist nen Strategie spiel. Also wie beschrieben recht performance lastig, weil das ganze spiel auf dem Server statt findet (figuren berechnen etc...). Und jetzt stelle man sich vor, das 1000 clienten eine Figur von a nach b bewegen und der server die zwischen-weg-punkte immer wieder zu jedem client updaten muss.
Hallo,
ich stehe gerade vor der entscheidung, in welcher sprache ich einen Spiele server implementiere (java oder .NET).
Der Server sollte sehr viele User verwalten können, ca 1000 und mehr. Dies braucht natürlich auch einiges an performance.
Nun hab ich von einem bekannten Entwickler gehört, das es für java nen NIO packet gibt, mit dem man input und output streams 10x schneller verarbeiten kann.
Aber ist es dann schneller als die .NET sockets? Ich könnt es mir kaum vorstellen.
Gibt es in .NET schon fertige Multi User module?
Hat jemand erfahrung im Server .NET gebiet mit vielen clienten?
Gruß Stu
Hi,
ich möchte von meiner .NET Applikation ein PHP script aufrufen.
Dafür bietet das Framework doch bestimmt eine Funktion oder? Leider konnte ich nichts finden, weis einer von euch, wie es geht?
Das PHP script, welches ich aufrufen möchte, gibt mir eine Antwort. Wie kann ich diese dann abfangen?
Gruß Stu
Hallo,
ich hab diese Problem auch. Immer, wenn eine Celle den Eingabefokus hat, und man dann z.B. den Tab wechselt, wird diese Celle nicht mehr neugezeichnet, bis sie erneut den eingabe focus erhällt.
Bis heute ist mir zu diesem Problem keine lösung eingefallen. Google half auch nicht. Und ich glaube ich habe auch hier nen thread erstellt.
Gruß Stu
das ist doch alles zum Mäuse melken...
Anscheinend frisst die Process.Start Methode meine Parameter! Ich übergebe folgenden String der Methode:
Parameter: "" "" "C:\test.bin"
Und meinem Programm wird nur folgendes pbergeben
Args[0] = C:\test.bin, statt
Args[0] = ""
Args[1] = ""
Args[2] = "C:\test.bin"
Naja ich hab jetzt alle Leerzeichen durch "%" ersetzt. So muss ich auch nicht die File.Exits methode aufrufen.
Das ist doch alles horror...
Du kannst alle Dateien mit nem Stream beschreiben. Aber vieleicht wäre es besser, du ließt das html Document als XML ein.
if(Form.ShowDialog(this) == DialogResult.OK)
{
}
Hallo,
ich hänge gerade an folgendem Problem.
Mein Programm hat 3 Programmargumente:
Nun möchte ich mein Programm von einem anderen Programm aus starten. Dazu nutze ich die System.Diagnostics.Process.Start Methode.
Meine Programm argument erstelle ich so:
Arguments = "\"" + User.Username + "\" \"" + User.Password + "\" \"" + Filename + "\"";
Also jeder programm parameter ist in Anführungszeichen ("").
Nun kommt es aber vor, das ein Pfad leerzeichen enthällt. Und trotz gesetzer Anführungszeichen wird mir der Pfad (mit leerzeichen) zerteilt angeben.
Also aus dem Argumenten: "Benutzer" "Password" "C:\Mein Order\Datei.bin" würde mit der System.Diagnostics.Process.Start Methode folgende Parameter meinem Programm übergeben werden:
Args[0] = Benutzer
Args[1] = Password
Args[2] = C:\Mein
Args[3] = Order\Datei.bin
Das komische ist, wenn ich mein Programm von debugger aus mit diesen Argumenten start, funkioniert es. nur mit der Start Methode wird es geteilt!
Dann dachte ich mir, ich füge mir den Pfad einfach zusammen und baute mir folgende Methode:
static void ReadParameter(string[] Args, out string User, out string Password, out string Filename)
{
string file;
User = "";
Password = "";
Filename = null;
//try to resolve the parameter by the file name
file = "";
for(int i = 0; i < Args.Length; i++)
file += " " + Args[i];
if (System.IO.File.Exists(file))
{
User = "";
Password = "";
Filename = file;
return;
}
file = "";
for (int i = 1; i < Args.Length; i++)
file += " " + Args[i];
if (System.IO.File.Exists(file))
{
if (Args.Length > 0)
User = Args[0];
else
User = "";
Password = "";
Filename = file;
return;
}
file = "";
for (int i = 2; i < Args.Length; i++)
file += " " + Args[i];
if (System.IO.File.Exists(file))
{
if (Args.Length > 0)
User = Args[0];
if (Args.Length > 1)
Password = Args[1];
Filename = file;
return;
}
//no file name available
if (Args.Length > 0)
User = Args[0];
if (Args.Length > 1)
Password = Args[1];
}
In der Methode teste ich, wenn ich nen Existierende Dateinamen bekomme.
Das funktioniert auch. Nur wenn ich die Datei dann mit meiner Form öffnen will, kann ich auf die Datei nicht mehr zugreifen, weil ein anderer Prozess bereits auf sie zugreift. Ich denke mal das ist ein konflickt zwischen Main-Thread und Form thread.
Die MSDN sagt zu der System.IO.File.Exists Methode folgendes:
Zwischen dem Aufrufen der Exists-Methode und dem Ausführen eines anderen Vorgangs für die Datei, z. B. Delete, ist es jedoch möglich, dass ein anderer Prozess auf die Datei zugreift und diese ändert. Daher empfiehlt es sich, die Exists-Methode mit einem Wrapper zu versehen, und die für die Datei auszuführenden Vorgänge in einen try...catch-Block einzuschließen, wie im Beispiel dargestellt. Mit dieser Maßnahme können Sie potenzielle Konflikte eingrenzen. Durch den Einsatz der Exists-Methode erhöht sich die Wahrscheinlichkeit, dass die Datei verfügbar ist, er bietet jedoch keine Garantie.
Nehme ich den File.Exists aufruf wieder heraus, kann ich auch wieder ganz normal auf die Datei zugreifen.
Frage: Warum kann es sein, das die im "Main" aufgerufende File.Exits Methode mir den zugriffprozess der Datei klaut? Und wie kann ich es bereichtigen?
Gruß Stu
warum denn si kompliziert?
Image i = Image.FromFile("bild.jpg");
i.Width, i.Hight
MyControl sollte mein "UserControl" sein.
Aber es ist alles richtig. Das Control hat den eingabe Focus, und das Event ist richtig angehängt.
Ich hab schon nen bischen ahnung.
Die funktion ist ganz normal ein Methode von dem UserControl.
Und es funktioniert ja auch. Aber wie gesagt, nur wenn das Control direckt auf der Form sitzt, und nicht erst x-mal verschachtelt.
protected override void OnKeyDown(KeyEventArgs e)
{
}
also das Event ist schon richtig regestriert. Es funktioniert ja auch, wenn das control "direkt" auf der Form plaziert ist.
Hi,
ich habe ein geschachteltes Control (ca 4 Ebenen), in dem ich key events abrufen möchte. Leider wieder die Key event nichts aufgerufen.
Das control hat definitiv den Eingabe Focus (mit der Maus wurde hineingeklickt, und zusättlich noch manuell mit "Focus()).
Die KeyPreview eigentschaft der übergeordnetem Form war zeitweise auf true, hat aber nichts geädern.
Informationen zur verschachtelung: Form->TabControl->TabPage->UserControl->SplitPanel->SplitPanel->MyControl
Wo liegt das Problem?
Gtuß Stu
hab ich mir auch so gedacht. Danke für die Antwort.
noch einmal eine Frage bezüglich LGPL in "Combined Works".
Ich hab also meine eigene Library, in der der LGPL Code enthälten. In der Library Information ist vermerkt, das dort LGPL Code enthalten ist.
Meine Combined Work Library benutze ich jetzt in anderen Librarys und Programmen (welche alle zu einem Projekt gehören).
Muss ich jetzt in JEDEM Projekt (egal ob Library oder Anwednung) vermerken, das der LGPL Code aus meiner (bereits vermerkten) Combined Work benutzt?
also das zu Programmieren ist definitive nicht einfach, obwohl das nicht mal richtig 3D ist (richtig 3d wäre es, wenn es nach hinten hin kleiner werden würde).
Aber schau dir einfach mal solche 3D formeln an.
Das hauptproble aus meiner Sicht ist dabei, zu wissen welche Daten zu sehen sind, und welche hinter anderen liegen.
Die resx Datei von einem UserControl löschen würde böse enden.
Ich nun einfache die alte imageliste gelöscht, und einen neue gemacht.
Clean / Rebuild hat leider nichts an dem Problem geändert.
hat das AxObject keine Reset Funktion?
Ansonsten halt nen neues Object vom ActiveX erzeigen.
Hallo,
Ich habe eine ImageList auf einem UserControl , in der ich vor längerer zeit Images eingefügt hab.
Wenn ich mir die ImageList im Disigner anschaue, werden mir auch alle Bilder richtig angezeigt.
Nur wo nimmt er die Bilder her? In dem Projektordner sind sie nicht drin.
Der Disigner code sagt folgendes
this.TreeViewItemImageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("TreeViewItemImageList.ImageStream")));
this.TreeViewItemImageList.TransparentColor = System.Drawing.Color.Fuchsia;
this.TreeViewItemImageList.Images.SetKeyName(0, "");
// ...
this.TreeViewItemImageList.Images.SetKeyName(10, "");
Also der hohlt sich die Bilder aus den "resources" des UserControl. Nur leider kann ich die dort nicht sehen. Misteriös.
Aber soweit wäre mir das ja egal...
Aber jetzt kommt der Fehler:
Ich möchte der ImageList ein Bild anhängen. Also gehe ich den Disigner, und füge ein Bild ein.
Lass ich das Programm dann laufen, so gibt es eine "Der index ist außerhalb der Arraygrenzen Exception".
Grund für die Exceotion:
Aus den Recourcen werden nur die Ursprünglich (bei mir 10) Bilder geladen. Und beim einfügen des neuen (11´tem) Bildes stürtzt er ab.
this.TreeViewItemImageList.Images.SetKeyName(11, "neuesBild.png");
Kennt jemand das Problem, und kann mir sagen wie man es behaben kann?
Gruß Stu
Hi,
ich möchte ein Bild mit abgerundeten kanten zeichnen.
Dazu mache ich mir einen Graphic Path.
Nun möchte ich diese GraficPath mit dem Bild, also einem TextureBrush füllen.
Vom prinziep her funktioniert das auch. Aber das Bild im TextureBrush wird ja gekachelt. D.h das bild wird nicht so gezeichnet wie ich das haben will.
Da der TextureBrush als Konstruktorparameter ja auch ein Rectangle hat, dachte ich mir, das man dort ja das Rechteck angeben könnte.
Aber immer wenn ich da ein Recteck angeben, dessen "Location" größer 0,0 ist, bekomme ich OutOfMemoryException
TextureBrush t = new TextureBrush(ConvertetInstrumentBitmap,
new Rectangle(1, 0, 150, 100));
Diese Beispiel gibt eine Memory Exeption.
Nun meine Frage: Ich möchte das der TextureBrush das Bild an eine bestimmt stelle zeichnet. Aber bei einer Angabe eines Rechteckes stürt es ab. Was mache ich falsch?
Gruß Stu
das war mir schon von anfang an klar, das für jegliche information aus diesem Forum keine haftung übernommen wird.
warum ist das nicht gelaufen? Ich meine den Flashplayer gibt es doch unter Windows x64.
Bei Vista 64 musst etwas beachten.
Compilierst du dein Programm mit "any cpu", wird es unter x64 als ein 64Bit programm gestartet, das heißt alle DLL´s müssen auch 64bit sein ODER ín den "wow64" ordner kopiert werden (solange sie Native sind).
Wenn das Flash ActiveX nun auf x86 compiliert wurde, dann musst du deine anwendung auch mit x86 compilieren.
was machst du mit Konturfarbe? DrawString hat bei mir NUR die Text Füllung...
Die füllung kannst du verändern, in dem du als Parameter nen neue Brush angibst.
Alternative kannst du dir auch nen GraphicPath mit einem Schriftzug erstellen, und diesen dann mit einem "Pen" nachzeichnen. So kannst du nen Textumrandung zeichnen.
Hallo,
ich habe ein paar Rechtlicht Fragen zur GNU Lesser General Public License
(http://www.gnu.org/copyleft/lesser.html):
Ich benutze in meiner kommerziellen Anwendung den ZedGraph wie folg:
Ich habe mir eine neue DLL erstellt, und dort den kompletten ZedGraph Source code eingefügt.
Die DLL hat einen anderen namen, als "ZedGraph.dll".
Dann habe ich noch einige Änderungen und Erweiterungen hinzugefügt.
Die entstandene DLL ist dynamisch mit meiner Anwenung gelinkt und kann eigenständig kompiliert werden (also ohne anderen code).
Nun meine Fragen:
Muss ich in meiner AboutBox den ZedGraph erwähnen?
Darf ich die DLL anderst nennen?
Muss in der Info der DLL irgentwas vom ZedGraph stehen?
Muss ich die GNU Lesser General Public License als .txt auf den Zielrechner mit installieren?
Oder muss ich noch andere sachen machen?
Gruß Stu
Hallo,
Ich habe ein Programm, welches mehrere DLL benötigt. Diese DLL´s waren bis jetzt immer im selben Order wie das Programm.
Nun möchte ich das Programm aber unter vista x64 laufen lassen. Und plötzlich werden 2 meine DLL´s "nicht mehr gefunden oder haben das falsche format".
Die beiden DLL´s die nicht gefunden werden , sind C++ DLL´s, die nicht wie die C# Dlls mit "Any CPU" compiliert wurden, sondern mit "Win32". "Win32" ist die einzigste konfiguration, mit der ich die DLL compilieren kann. In der "Win32" dll nutze ich .NET , aber auch Nativen C++ code. Dennoch muss die DLL eine .NET dll sein, da ich sie mit dem Programm "Reflector" wieder anschauen kann (auch meinen C++ code). Abgesehen davon lässt sie sich auch ohne weiteres in .NET programmen einbinden.
Nun ist das ja bei vista x64 so, das Win32 dll´s nicht in das System32 verzeichniss kommen, sondern in ein seperates Verzeichnis (SysWoW64).
Ja was mache ich nun mit den "Win32 .NET" DLL´s, jemand eine Ahnung?
Gruß Stu
vieleicht finde er den find nicht, oder kann ihn nicht laden.
Hallo,
ich habe eine DLL geschrieben, mit der man Vorlagen drucken kann. Normalerweise funktioniert die ganz gut. Aber aus irgentweinem Grund, wird auf einem Testrechner nur "Kraut und Rüben" gedruckt. Damit meine ich, das der Text mir nicht richtig ausgeben wird (siehe anhang).
Auf dem rechner ist ein engliches XP, aber daran wird es ja wohl kaum liegen.
Ich habe die DLL debuggt, und geschaut was bei "DrawString" als parameter übergeben wird: Die Werte waren alle kKorrekt.
Wenn ich in meinem Programm eine Druckvorschau mache, dann ist alles ok. Aber sobald ich richtig drucke (auf nem PDF printer) wird mist gedruckt.
Liegt das vieleicht am Drucker treiber?
Gruß Stu
Hi,
System: Windows Visa.
Wie lese ich die Temporary Internet Files aus? Ich habe es mit "Directory.GetFiles" probiert. Dabei wird mir aber nur einer Datei zurück geben.
hier: http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=88416&SiteID=1
habe ich gelesen, das das ie Temp verzeichniss virtuell ist.
Jemand eine Idee wie dieses Verzeichniss doch auslesen kann?
Gruß Stu
mhh glaube das VS2008 wurd mir letzens zu geschickt. Muss ich das mal installieren.
Danke für den Tip.
Moin,
kann das Visual Studio 2005 Zeilen in Projekten zählen? Wenn ja wie?Ich hab keinen entpsrechenden Menüpunkt gefunden.
Gruß Stu
viel hast du noch nicht in C# programmier oder? Hier mal nen Beispiel:
LineItem myCurve = ZedGraphControl.GraphPane.AddCurve("Legenden Text",...);
for(int i = 0; i < 100; i++)
myCurve.AddPoint(i,i);
du hast die definition von "myCurve" in einem Block gesetzt. Somit ist die Variable auch nur in dem Block sichtbar...
Du must die ausserhalb definieren.
Musst es halt manuell machen, mit nem XmlDocument.
Mit SelectSingelNode kannst du dann abfragen machen.
XmlDocument d = new XmlDocument();
d.Load("meinXMLfile.xml");
d.SelectSingelNode("/Root/Unterverzeichniss/ItemName[Atrribute=XXX]");
du möchtest einen Kurvenzug einfügen, also:
LineItem myCurve = ZedGraphControl.GraphPane.AddCurve("Legenden TExt", ...);
willst du punkte in die Kurve einfügen:
myCurve.AddPoint(0,0);
myCurve.AddPoint(1,1);
myCurve.AddPoint(2,2);
etc....
Du fügst höchstwahrscheinlich immer einern komplett neuen zug ein, mit den neuen Punkte...
du fügt dann immer ein neues Line Object ein.
Du die neuen Punkte einfach das das bestehen Line oject anhängen.
EDIT:
AddCurve gibt dir doch nen "LineItem" zurück.
Bei dem musst du einfach nur "AddPoint" aufrufen und dann Neuzeichnen, bzw AxisChange.
schau dir mal
g.InterpolationMode
vieleicht ist da ja ne einstellung dabei.
Ansonsten selber machen.
Hi!
Ich möchte gerne wissen, ob ein bestimmter Punkt in einer Region oder in einem GraficPath ist.
Ich hab irgentwo mal gelesen, das es dafür Funktionen gibt. Die hilfe hab schon erfolglos durchforstet.
Weiß da jemand was genaueres?
Gruß Stu
ich hab gerade was gelesen zu der RollingList gelesen
/// A class that provides a rolling list of <see cref="PointPair" /> objects.
/// This is essentially a
/// first-in-first-out (FIFO) queue with a fixed capacity which allows 'rolling'
/// (or oscilloscope like) graphs to be be animated without having the overhead of an
/// ever-growing ArrayList.
///
/// The queue is constructed with a fixed capacity and new points can be enqueued. When the
/// capacity is reached the oldest (first in) PointPair is overwritten. However, when
/// accessing via <see cref="IPointList" />, the <see cref="PointPair" /> objects are
/// seen in the order in which they were enqeued.
**capacity is reached the oldest (first in) PointPair is overwritten. **
also der fängt von vorne an den buffer neu zu beschreiben, wenn du ihn nicht erweiterst.