Laden...
S
Stu42 myCSharp.de - Member
Softwareentwickler Aus dem Norden Dabei seit 15.10.2006 506 Beiträge
Benutzerbeschreibung

Forenbeiträge von Stu42 Ingesamt 506 Beiträge

31.07.2008 - 23:28 Uhr

d.h wenn ich einen SxS error habe, sollte ich schauen, ob die .DLL bereits im WinSxS ordner ist?

31.07.2008 - 17:01 Uhr

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.

05.06.2008 - 11:02 Uhr

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.

05.06.2008 - 10:49 Uhr

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

03.06.2008 - 08:35 Uhr

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?

02.06.2008 - 23:31 Uhr

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

12.05.2008 - 18:58 Uhr

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.

12.05.2008 - 16:39 Uhr

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

24.04.2008 - 10:12 Uhr

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

18.04.2008 - 13:15 Uhr

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

18.04.2008 - 12:15 Uhr

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...

17.04.2008 - 11:38 Uhr

Du kannst alle Dateien mit nem Stream beschreiben. Aber vieleicht wäre es besser, du ließt das html Document als XML ein.

17.04.2008 - 11:31 Uhr

System.IO.File.Move

17.04.2008 - 11:23 Uhr

if(Form.ShowDialog(this) == DialogResult.OK)
{
}

17.04.2008 - 11:18 Uhr

Hallo,

ich hänge gerade an folgendem Problem.

Mein Programm hat 3 Programmargumente:

  1. Username
  2. Password
  3. Dateiname

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

10.04.2008 - 18:37 Uhr

warum denn si kompliziert?

Image i = Image.FromFile("bild.jpg");
i.Width, i.Hight

09.04.2008 - 15:00 Uhr

MyControl sollte mein "UserControl" sein.

Aber es ist alles richtig. Das Control hat den eingabe Focus, und das Event ist richtig angehängt.

09.04.2008 - 13:15 Uhr

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.

09.04.2008 - 12:52 Uhr
protected override void OnKeyDown(KeyEventArgs e)
{
}
09.04.2008 - 12:40 Uhr

also das Event ist schon richtig regestriert. Es funktioniert ja auch, wenn das control "direkt" auf der Form plaziert ist.

09.04.2008 - 12:02 Uhr

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

03.04.2008 - 12:30 Uhr

hab ich mir auch so gedacht. Danke für die Antwort.

03.04.2008 - 11:56 Uhr

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?

03.04.2008 - 11:15 Uhr

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.

03.04.2008 - 11:08 Uhr

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.

02.04.2008 - 09:59 Uhr

Clean / Rebuild hat leider nichts an dem Problem geändert.

02.04.2008 - 09:44 Uhr

hat das AxObject keine Reset Funktion?

Ansonsten halt nen neues Object vom ActiveX erzeigen.

02.04.2008 - 09:38 Uhr

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

13.03.2008 - 13:27 Uhr

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

11.03.2008 - 13:48 Uhr

das war mir schon von anfang an klar, das für jegliche information aus diesem Forum keine haftung übernommen wird.

11.03.2008 - 13:13 Uhr

danke für die Informationen.

11.03.2008 - 11:48 Uhr

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.

11.03.2008 - 11:41 Uhr

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.

11.03.2008 - 11:23 Uhr

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

22.02.2008 - 12:08 Uhr

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

14.02.2008 - 16:02 Uhr

vieleicht finde er den find nicht, oder kann ihn nicht laden.

14.02.2008 - 09:13 Uhr

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

04.02.2008 - 09:10 Uhr

ah , ja viele dank! so gehts es.

03.02.2008 - 14:04 Uhr

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

31.01.2008 - 19:31 Uhr

mhh glaube das VS2008 wurd mir letzens zu geschickt. Muss ich das mal installieren.

Danke für den Tip.

31.01.2008 - 15:32 Uhr

Moin,

kann das Visual Studio 2005 Zeilen in Projekten zählen? Wenn ja wie?Ich hab keinen entpsrechenden Menüpunkt gefunden.

Gruß Stu

31.01.2008 - 11:09 Uhr

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);

31.01.2008 - 09:36 Uhr

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.

31.01.2008 - 09:33 Uhr

alles klar, danke danke.

30.01.2008 - 21:10 Uhr

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]");

30.01.2008 - 20:58 Uhr

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...

30.01.2008 - 14:35 Uhr

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.

30.01.2008 - 14:31 Uhr

schau dir mal

g.InterpolationMode

vieleicht ist da ja ne einstellung dabei.

Ansonsten selber machen.

30.01.2008 - 13:49 Uhr

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

12.12.2007 - 10:40 Uhr

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.