
Kati82
Mitglieder-
Gesamte Inhalte
108 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Alle Inhalte von Kati82
-
Und wenn du wieder die PictureBox verwendest, ist da das gleiche Problem?
-
Du kannst bei der ImageList ein ImageSize angeben (Pixelgröße). Ob man bei den enthaltenen Images selbst noch die Größe ändern muss, weiß ich jetzt nicht. Musst du einfach mal ausprobieren. Ok hab grad dein Edit gelesen. Wie groß ist denn die Bildgröße im Allgemeinen bei deinen Bildern?
-
Hallo, ich habe mal ein ein paar Fragen zum Dll-Import in Zusammenhang mit den Compilereinstellungen. Ich habe bis jetzt folgendes gemacht: #pragma comment(lib, "Lib-Datei") #include "HeaderZurLib.h" value struct EINSTRUCT{ [DllImport("DLLDatei.dll")] static DWORD EineFunktion(...); }[/PHP] Das funktioniert soweit ganz gut. Jetzt habe ich allerdings folgendes festgestellt. Wenn ich in Debug übersetze kommen keinerlei Fehlermeldungen oder Warnungen. Übersetze ich allerdings in Release kommen ein Haufen Warnungen für jede Funktion, die es in der Dll gibt. Diese sind: [CODE]warning C4272: 'EineFunktion' : is marked __declspec(dllimport); must specify native calling convention when importing a function.[/CODE] Diese Warnungen gibt der Compiler mir für die Header-Datei aus, die ich eingebunden habe. Meine Fragen sind jetzt: Warum bekomme ich die Warnungen nur unter Release? Was muss ich machen, damit ich die Warnungen weg kriege? An der Header-Datei möchte ich ungern etwas ändern. Kann ich dieses "value struct" irgendwie umgehen? Ich frage nur deshalb, wenn die Dll sehr viele Funktionen enthält, bedeutet das ja ne Menge Schreibarbeit. Ich hoffe, meine Fragen kommen euch jetzt nicht zu blöd vor. Aber was die Compilersachen angeht, muss ich sagen, dass ich es bisher einfach so hingenommen habe, dass es so ist. Jetzt möchte ich es auch mal verstehen, warum es so ist. Viele Dank im voraus. Gruß Kati82 P.S.: Ich habe eine native dll in ein C++/CLI-Projekt eingebunden.
-
Keine Ahnung. Aber DirectoryInfo hört isch als Suchbegriff schon mal gut an. Falls es da keine passende Eigenschaft geben sollte, musst du das eventuell von Hand ermitteln, also alle Files (FileInfo?) zurückgeben lassen und von denen die Größe ermitteln und alles addieren.
-
Geht bei mir nur mit C#
-
Wie denn? Ich kann höchstens irgendwelche Kommentare ins Diagramm einfügen, aber keine neue Klassen. Brauch ich da irgendein Plugin oder Addon?
-
Hallo, das geht über datagridview->rows->add(). Hier ein Beispiel von der MSDN: datagridview->rows->add() Gruß Kati82
-
Was ich nur schade finde, dass man im Visual Studio im Klassendiagramm keine neue Klasse erstellen kann. Mit eclipse ging das mit irgendeinem Plugin. Hat man im Diagramm eine Klasse hinzugefügt, wurde sie automatisch in den Quelltext eingefügt. Oder geht das auch mit Visual Studio?
-
Du gehst im Solution Explorer mit der rechten Maustaste auf dein Projekt. Da gibts dann einen Menü-Eintrad "View Class Diagram". Ist allerdings fraglich, ob dir das weiterhilft. Bei mir werden gar nicht die von mir erstellten Klassen angezeigt, auch nicht die Form-Klasse. Hab allerdings in UML nur sehr wenig Erfahrung.
-
Ja, unbedingt! Sonst wirft das meine ganze Planung durcheinander . Hatte ich vorher auch schon probiert. Da gings nur irgendwie nicht, wahrscheinlich hatte ich noch irgendeinen anderen Fehler drin. Jetzt klappts aber. Hier mal der Code. ... char *blub = "blubber"; Thread^ paramThread = gcnew Thread(gcnew ParameterizedThreadStart(this, &TolleKlasse::ThreadParam)); String^ strblub = gcnew String(blub); paramThread->Start(strblub); ... void TolleKlasse::ThreadParam(Object^ data); { String^ temp = Convert::ToString(data); char *buffer = (char*)(void*)Marshal::StringToHGlobalAnsi(temp); ... }[/PHP] Ich hoffe, ich hab nix vergessen. Wer ne bessere oder andere Lösung hat, kann ja gerne noch ergänzen.
-
Ja, und das mit der Gewähr tritt wohl hier ein. Genau so habe ich es nämlich bei mir im Quellcode stehen. Und wie gesagt, kommt dann diese eine Fehlermeldung bei Thread->Start. Ich glaub die Schwierigkeit liegt hier darin, den char* in ein Object^ zu casten. Nur habe ich nocht nicht herausgefunden wie das geht. Und ein Trick 17 ist mir dazu noch nicht eingefallen. Aber trotzdem danke erst mal für die Hilfe
-
Hallo, kann mir jemand sagen, wie man ein char* an einen Parameterized Thread übergibt. Ich komm damit irgendwie nicht klar. Bekomme dann die Fehlermeldung, dass char* nicht in System::Object^ umgewandelt werden kann. Schon mal vielen Dank im voraus. Gruß KT82
-
Er wollte auf seinem Rechner halt auch debuggen. Aber das ging ja nicht. Mir ist aber dann eingefallen, dass man ja noch "Attach to Process" machen konnte. Man braucht halt nur das richtige pdb. Und so gings dann einiger Maßen.
-
Hallo, das mit den GetAvailableThreads habe ich wohl überlesen in der MSDN. Danke für den Hinweis. Die Anzahl der Threads brauche ich nur für Debugging-Ausgaben. Was meinst du mit unsauber? Gruß KT82
-
Ok, da komme ich also nicht drum herum. Ich hatte nur gehofft, dass es irgendwie eleganter geht. Aber danke für die schnelle Antwort.
-
Hallo, ich bräuchte mal einen Tipp von euch. Ich habe einen Thread, der mehrmals aufgerufen wird. Das habe ich durch einen Threadpool gelöst. Ich muss noch dazu sagen, dass z.B. Thread1 zur gleichen Zeit mehrmals laufen kann. Kann ich irgendwie herausfinden, wieviele Threads sich im Threadpool befinden? In der MSDN finde ich nur diese GetMaxThreads und GetMinThreads. Das ist aber nicht ganz das, was ich möchte. Gibts da noch ne extra Methode oder muss ich mir dafür eine eigene Variable erstellen und dann mitzählen, wie oft ich den Thread hinzugefügt habe. Vielen Dank schon mal im voraus. Gruß Kati82
-
Hallo, ich hoffe ihr könnt mir weiterhelfen. Ich habe ein Projekt mit Visual Studio 2008 erstellt. Jetzt möchte sich jemand anderes das Projekt gerne mal anschauen, er hat aber nur Visual Studio 2005. Kennt ihr eine Möglichkeit, wie ich mein Projekt exportieren kann, so dass es auch und Visual Studio 2005 geht? Vielen Dank im voraus. Gruß Kati82
-
:upps Hätte natürlich einen RawSocket nehmen sollen, anstatt nem Stream.
-
Ok, ich muss meine Idee wieder verwerfen. Das bind mit meiner Rechner-IP funktioniert nicht, da diese Adresse bereits von dem anderen Socket in Benutzung ist.
-
Hallo nochmal, bitte versteh mich nicht falsch, ich bin für jeden Ratschlag dankbar. Beratungsresistent bin ich ganz und gar nicht. Versteh nur halt manchmal nicht, was du meinst. Nochmal zur Verdeutlichung. Das Testprogamm besteht eigentlich aus 3 verschiedenen Tests. Beim ersten wird der Ping getestet. Das funktioniert soweit. Der zweite Test läuft eben über TCP und soll die Geschwindigkeit bzw. den Datendurchsatz bestimmen. Der dritte Test geht über das S7-Protokoll. Da weiß ich allerdings noch nicht, wie ich das mache, habe mir allerdings bis jetzt auch noch keine Gedanken drüber gemacht. Muss da noch ein paar mehr Informationen einholen. Ich habe mir allerdings noch einige Überlegungen wegen dem Datendurchsatz beim Senden gemacht. Mir ist da so ne Idee gekommen, ohne dass man "Schönrechnen" muss. Muss aber noch ausprobieren, ob das klappt. Was ist, wenn ich mir einen zweiten Socket erstelle und diesen an meine Adresse vom Rechner binde. Rein theoretisch müsste ich doch dann mitkriegen, was alles über die IP vom Rechner läuft. Könnte das funktionieren?
-
Jetzt hör mal auf mich als dumm hinzustellen oder mein Programm als sinnlos zu erklären. Ich sags nochmal, das soll ein Testprogramm werden. Zum einen soll die Geschwindigkeit gemessen werden und zum anderen soll später, allerdings nicht auf TCP basierend sondern über ein anderes Protokoll, der Server mit Verarbeitungsbefehlen bombardiert werden. Aber bis dahin ist es noch ein weiter Weg. Es kann nicht jeder so ein Experte sein wie du. Ich will nämlich erst mal verstehen, was ich eigentlich mache.
-
Ok, ich weiß, ich nerve. Als Beispielprogramm, wo ich aus meiner Laiensicht zumindest kein Protokoll erkennen kann, wäre NetIO. Aber dass nur so nebenbei. Ich weiß übrigens, was ich machen will. Wenn ich mich an irgendeiner Stelle nicht verständlich ausdrücke, dann musst du mir auch schon sagen wo. Sonst weiß ich nicht, was ich noch mal beschreiben sollte. Mit dem Timeout hast du mich überzeugt. Den habe ich weggelassen, damit der Empfang nicht abgebrochen wird. Empfang wird also nur beendet, wenn ich an einer anderen Stelle sage, dass der Empfangsthread abgebrochen werden soll. Dafür habe ich jetzt nen Timer eingebaut, der nachfragt, wieviele Bytes versendet worden sind. Daraus kann ich dann die Datenrate berechnen. Und das funktioniert auch halbwegs. Eigentlich traue ich mich schon gar nicht mehr ne Frage zu stellen. Du sagst, dass die Übertragungsraten meist Durschnittswerte über eine bestimmte Zeitspanne sind. Jetzt ist mir aber bei meinem Programm was aufgefallen. Der Befehl send() ist ja bei mir blockierend. Was ist, wenn ich jetzt ein sehr großes Frame senden möchte, dessen Übertragung mehrere Sekunden dauert. Wenn ich jetzt allerdings mittels meines Timers die Datenrate berechne, dann kommt als Ergebnis raus, dass ich in der ersten Sekunde dieses wahnsinnig große Frame gesendet, aber in den darauffolgenden Sekunden überhaupt nichts sende (wegen blockierender Socket in der while-Schleife). Diese Angabe entsprechen nicht der Realität, denn das Frame wird in mehrere kleine aufgeteilt und dann gesendet. Wie bekomme ich also jetzt den tatsächlichen Wert (den Durchschnittswert) heraus? Ist das machbar? Die Zeit zu messen, macht in diesem Fall ja auch keinen Sinn. Ich hätte nämlich schon gerne, dass nach einer vergangenen Sekunde ein realer Wert da steht. Hoffentlich habe ich mich diesmal verständlich ausgedrückt.
-
Ja, das ist wirklich wie die Frage mit den Reifen. "Was brauche ich zum Reifen wechseln? Einen Hammer vielleicht?" Wenn man nicht verstehen kann, wozu was gut ist, dann wird man auch nicht wissen, ob es für seine Problemstellung geeignet ist. Deswegen habe ich nachgefragt. Natürlich könnte ich den Timeout in der select-Anweisung weglassen. Somit hätte ich einen Thread der endlos lang empfangen würde, solange bis man den Thread abbricht. Und das mit dem Protokoll, da ist natürlich was Wahres dran. Aber dann frage ich mich, wie das die anderen Tools, die im Internet rumschwirrden, machen, die dann hinterher die Datenübertragungsrate angeben. Da sieht man ja im Wireshark das die auch nur "irgendwas" senden. Ich glaube kaum, dass die erst senden und in der gleichen Funktion dann auf die Antwort warten. Oder vielleicht doch??? Das heißt jedenfalls für mich, dass ich mir Gedanken drüber mache werde, wie ich das Ganze besser lösen kann. Aber danke für die Hinweise.
-
Ich muss jetzt doch noch mal nachfragen. In dem Empfangsthread habe ich doch ein select mit Timeout eingebaut. Also wenn nach 1 Sekunde nichts empfangen wurde, dann soll er die while-Schleife verlassen. Den Timeout brauche ich deswegen, weil zwischen Start des Threads und dem Senden wohl mehr Zeit vergeht als zwischen dem Start des Threads bis zu dem select. Diesen Timeout möchte ich gerne wegmachen, da ich die Zeit zwischen Senden und Empfang messen möchte. Wie stelle ich das jetzt am besten an? Habe gelesen, dass es eine Funktion fork() gibt. Hab das aber immer nur in Verbindung mit Servern gelesen, aber ich mach ja einen Client. Kann man das auch für Clients anwenden? Wäre das der richtige Ansatzpunkt? Wenn ja, wär es nett wenn ihr mir ein paar Links oder so nennen könntet, wo ich das nötige Hintergrundwissen nachlesen kann, da ich noch nicht so richtig weiß, wie das ganze funktioniert und wie ich es anwenden soll. Ansonsten bin ich auch für jeden anderen Ratschlag von euch dankbar. Gruß Kati82
-
Datagridview inhalt aller zellen in einer bestimmten spalte (vb05)
Kati82 antwortete auf Gateway_man's Thema in .NET
Verstehe noch nicht ganz was du machen möchtest. Du hast ne DGV, wo in einer Spalte die Adressen stehen. Jetzt möchtest du die Adressen in einer Combobox anzeigen lassen, richtig? Was ist jetzt genau dein Problem? Das Einfügen in die Combobox? Das geht über Combobox.Items.Add() oder Combobox.Items.AddRange(). Ist dir damit geholfen?