
Alle Beiträge von Guybrush Threepwood
-
neues Design
Guybrush Threepwood hat auf einen Beitrag in einem Thema geantwortet in News und Feedback zu Fachinformatiker.deAlso das neue Design gefällt mir richtig gut :beagolisc Ich hoffe aber auch das die Userränge und die Sterne wiederkommen...
-
Knights of the old republic 2 - The Sith Lords
Guybrush Threepwood hat auf einen Beitrag in einem Thema geantwortet in Gaming Club's Allgemeine ThemenSolange Bastila mitspielt ist mir alles andere egal;) :floet:
-
Knights of the old republic 2 - The Sith Lords
Guybrush Threepwood hat auf einen Beitrag in einem Thema geantwortet in Gaming Club's Allgemeine ThemenIch fand den ersten Teil auch absolut genial, nur leider vieeeeeeeeeeeel zu kurz. Hoffentlich wird der 2te auch so fesselnd:beagolisc :beagolisc
-
ListView
Evtl. bekommst du die Nachricht aber per WM_NOTIFY gesendet.
-
FAQ Vorschlag: Header,Librarys und C-Strings
Das verstehe ich jetzt nicht so richtig. Mal angenommen ich erstelle mir unter Windows eine DLL die eine Funktion exportiert. Wenn ich diese Linke bekomme ich die .dll und die .lib. Danach erstelle ich mir ein Programm welches die Funktion per __declspec(dllimport) importiert. Dann muss ich dem Linker beim erstellen der Anwendung die .lib Datei angeben. Nach dem Erstellen benötigt die Exe aber die DLL. Die andere mir bekannte Möglichkeit ist die Funktion zur Laufzeit der Exe aus der DLL zu laden, dann benötige ich die .lib nicht zum linken. D.H. doch das ich entweder die .lib und die .dll oder nur die .dll brauche.
-
ListView
Was ist denn mit WM_HSCROLL?
-
FAQ Vorschlag: Header,Librarys und C-Strings
Heißt das jetzt einfach nur das die dynamische Bibliothek zum Linken nicht benötigt wird, was ja IMHO so ist und wirlich etwas unglücklich ausgedrückt ist? Oder das, wenn ich mit einer statischen Bibliothek linke, ich die dynamische überhaupt nicht mehr benötige?
-
FAQ Vorschlag: Header,Librarys und C-Strings
Hab noch folgende Texte aus der alten FAQ in meinen privaten Nachrichten gefunden: Was sind Header? Funktionen und Datentypen werden in Headerdateien (*.h) deklariert. Diese Headerdateien müssen per #include <dateiname> oder #include "dateiname" in alle Quellcodedateien eingebunden werden, die Zugriff auf diese Funktionen benötigen. Wird dies nicht gemacht, tritt bei unbekannten Datentypen Fehlermeldungen der Art "Fehlende Speicherklasse oder Typbezeichner" und bei unbekannten Funktionen "nichtdeklarierter Bezeichner" auf. Was sind Libraries? Zusätzlich zu den Headerdateien werden oft noch statische Libraries (Bibliotheken) benötigt (*.lib, *.a), die entweder selbst die Funktionsdefinitionen enthalten oder auf dynamische Bibliotheken (*.dll, *.so) verweisen. Diese Libraries müssen dem Linker angegeben werden, sonst tritt eine Fehlermeldung der Art: "unaufgeloester externer Verweis" auf. C-Strings: Strings werden in C als Array von Charactern angelegt: char szString[10]; liefert einen String mit 10 (Index 0-9) Zeichen. Für die meisten Funktionen muss jeder String mit einem '\0' als letztes Zeichen abgeschlossen werden. Dies geschieht bei den meisten Funktionen automatisch. Nur wenn man die Zeichen selber festlegt sollte man daran denken, da sonst Speicherüberläufe stattfinden können. Strings können nicht über den == Operator miteinanderverglichen werden, da so nur ihre Startadressen verglichen werden. Um solche Vergleiche durchzuführen gibt es verschiedene Funktionen, z.B. strcmp(), die in einer C Refernez oder hier auf dem Board nachgelesen werden können.
-
MDI Anwendung mit Toolbar und Tabcontrol
Wenn ich einen MDIClient erstelle kann ich diesem ja eine ID zuweisen(per lpvParam bei CreateWindow), die dann bei jedem MdiChild inkrementiert und diesem zugwiesen wird. Kennt jemand eine Möglichkeit später wieder an die ID des jeweiligen Childs dranzukommen? Ich möchte nämlich, wenn man ein MdiChild aktiviert, einfach die Tabcontrol mit der selben ID/Index als aktiv setzen.
-
MDI Anwendung mit Toolbar und Tabcontrol
Konnte die Probleme selber lösen. Hier gibt es einen Artikel wo genau beschrieben ist wie man MDI Anwendungen erstellt.
-
Tiefe und Flache Kopie
In welchem Zusammenhang denn? Ich kann damit nämlich überhaupt nichts anfangen:confused:
-
FAQ Vorschlag: Dynamische Speicherverwaltung mit C
Mir gings erstmal um C. Aber du hast Recht, man sollte new und delete trotzdem noch mit aufnehmen, da diese ja Construktor und Destruktor aufrufen und das mitunter sehr wichtig sein kann.
-
RichEdit Control und Tab Taste
Mach ich, danke!
-
physik problem
Vielleicht solltest du mal bei google oder so nach einem Hausaufgabenservice suchen Wenn du hier hilfe erwartest dann poste deinen Ansatz und womit du Probleme hast, denn niemand hier wird deine Arbeit für dich machen weil du zu faul bist.
-
FAQ Vorschlag: Dynamische Speicherverwaltung mit C
Da sich ja im FAQ Bereich nichts tut *tadelndumsichschau*, hab ich mal folgendes verfasst und bin für Vorschläge offen: Dynamische Speicherverwaltung mit C Um, mit C, während der Programmlaufzeit Speicherplatz zu reservieren, brauchen wir zunächst einmal einen Zeiger vom entsprechenden Datentyp. Dabei kann es sich um jeden beliebigen Datentyp handeln, in unserem Beispiel soll es ein Zeiger vom Typ char sein. char *lpZeiger; [/PHP] Dieser Zeiger soll nun die Adresse des Speicherplatzes aufnehmen, den wir reservieren wollen. Dies könnte z.B. so aussehen: [PHP] lpZeiger = (char*) malloc(sizeof(char)); Dabei reserviert die Funktion malloc den Platz für die Größe eines chars und gibt die Adresse zurück, welche wir nur noch in einen char Zeiger casten müssen. Um nun mit dem reserviertem Speicher, auf den lpZeiger zeigt, arbeiten zu können benötigen wir den Dereferenzierungsoperator *. Dieser sagt dem Compiler das wir nicht auf den Inahlt von lpZeiger, sondern auf den Bereich auf den er zeigt, zugreifen wollen. *lpZeiger = 'h'; printf ("%c\n",*lpZeiger); [/PHP] Wenn wir den selbst reservierten Speicher nicht mehr benötigen, sollten wir auf keinen Fall vergessen diesen wieder Freizugeben. [PHP] free(lpZeiger); Wenn wir dies nicht machen entstehen Speicherlecks, da der Speicher ja immer noch reserviert ist. Wir können aber nicht nur Platz für einen einzigen character reservieren, sondern auch für mehrere. Die einzige Grenze die wir haben ist der virtuelle Speicher des PCs. Um Speicher für mehrere character zu reservieren gehen wir einfach folgendermaßen vor: char *lpZeiger; lpZeiger = (char*) malloc(12*sizeof(char)); [/PHP] Somit haben wir Speicherplatz für 12 Character reserviert, in die wir jetzt z.B. einen String kopieren können: [PHP] strcpy(lpZeiger,"Hallo Welt!"); Alle die sich fragen warum wir 12 Character für einen String mit 11 Zeichen reserviert haben sollten das 0 Zeichen nicht vergessen, mit dem jeder String abgeschlossen wird. Diesen String können wir jetzt ganz einfach anzeigen (oder sonst was damit machen) und sollten wieder nicht vergessen den Speicher freizugeben sobald er nicht mehr benötigt wird: printf ("%s\n",lpZeiger); free(lpZeiger); [/PHP] Das Ganze ist aber nicht nur in einer Dimension, sondern in beliebig vielen möglich. Um z.B. ein zweidimensionales Array eines beliebigen Datentyps anzulegen benötigen wir einen Zeiger auf einen Zeiger. Klingt konfus ist aber so;) Als Beispiel soll uns wieder der char Datentyp dienen: [PHP] char **lpZeiger; Wie bereits gesagt haben wir jetzt einen Zeiger auf einen Zeiger. Das folgende Beispiel sollte das etwas verdeutlichen. Wir reservieren uns jetzt Speicher für 4 Zeiger und lassen lpZeiger drauf verweisen: lpZeiger = (char**) malloc(4*sizeof(char*)); [/PHP] Wie wir sehen zeigt lpZeiger jetzt auf 4 einfache char Zeiger mit denen wir eben Speicher für den String "Hallo Welt!" reserviert haben. Genau das Selbe können wir jetzt auch mit unseren 4 Zeigern machen. Um die Sache zu vereinfachen reservieren für für alle 4 Zeiger einen gleich großen Speicherplatz und nehmen dazu eine Schleife: [PHP] for (int i=0; i<4; i++) lpZeiger[i] = (char*) malloc(6*sizeof(char)); Nun zeigt lpZeiger also auf ein Array von 4 char Zeigern und jeder dieser char Zeiger auf ein Array für 6 Character. Um nun einen String in diese 4 Arrays zu Speichern können wir den [] Operator benutzen: strcpy(lpZeiger[0],"Daß"); strcpy(lpZeiger[1],"ist"); strcpy(lpZeiger[2],"ein"); strcpy(lpZeiger[3],"Test."); [/PHP] Wenn wir auf ein einzelnes Zeichen innerhalb eines dieser Arrays zugreifen wollen können wir den [] Operator auch mehrmals verwenden: [PHP] lpZeiger[0][2] = 's'; Damit wäre z.B. der Rechtschreibfehler im ersten Array korrigiert:) Wenn wir diese Arrays nun ausgeben wollen können wir wieder folgendermaßen vorgehen: for (i=0; i<4; i++) printf ("%s ",lpZeiger[i]); [/PHP] Wenn wir nur ein Zeichen ausgeben wollen machen wir`s wieder wie oben: [PHP] printf ("%c\n",lpZeiger[1][0]); Wenn wir jetzt den reservierten Speicher nicht mehr benötigen und wieder freigeben wollen, müssen wir zuerst mit der untersten Ebene, also mit den 4 Character Arrays, anfangen. Wenn wir zuerst den Platz für die 4 Zeiger freigeben würden, könntne wir über diese ja nicht mehr auf die Arrays zugreifen. Das Ganze machen wir am Besten so: for (i=0; i<4; i++) free(lpZeiger[i]); [/PHP] Somit sind die 4 * 6 Zeichen wieder freigegeben und wir können die 4 Zeiger freigeben: [PHP] free(lpZeiger); Das war`s schon:) Wie bereits gesagt lässt sich das mit jedem beliebigem Datentyp in C und mit beliebig vielen Dimensionen wiederholen. Bei mehr Dimensionen sollte man aber darauf achten, dass hier der Speicherverbrauch sehr schnell anwachsen kann. Für ein dreidimensionales Array vom Typ char mit je 100 Elementen wären das immerhin 100*100*100*sizeof(char) Byte, also 1000000 Byte und das sind ca. 1MB.
-
MDI Anwendung mit Toolbar und Tabcontrol
Ich hab ein Fenster mit einem Menü und einer Toolbar, auf der Toolbar befindet sich eine Tabcontrol. Wenn der Benutzer jetzt im Menu "Neu" wählt, wird ein RichEdit Fenster als MDI Child erstellt und ein Tab in der Tabcontrol erstellt, mit dem man zu dem Fenster wechseln kann. Dieses hat ja dann eine Titelleiste mit Systemmenü (Minimieren, Maximieren und Schließen). Wird dieses MDI Child Maximiert, wird die Titelleiste automatisch ausgeblendet und das Systemmenü in die Toolbar intigriert. Allerdings sind die 3 Buttons erst sichtbar wenn man mit der Maus drüber fährt. Außerdem bleibt das MDI Child in der gleichen Größe wenn das Hauptfenster maximiert wird, es wird also nicht mit maximiert. Wie kann ich das umgehen? Außerdem hab ich eben festgestellt das ich nicht auf das Tabcontrol zugreifen kann wenn ein MDI Child aktiviert ist, obwohl ich die Tabs sehe. :confused:
-
RichEdit Control und Tab Taste
Hi, wie bekomme ich es am einfachsten hin das man in einem Richedit Control per Tabtaste den Eingabecursor um eine bestimmte Anzahl Spalten weitersetzt (also so wie in jedem Texteditor)? Gruß Guybrush
-
X2 - Die Bedrohung
Um doch nochmal kurz off topic zu werden. Ich hab nen AthlonXP1700+, 256MB RAM und ne GeForce2 Ti und Far Cry läuft bei mir auf 1024*756 mit niedrigen Details sehr flüssig. Ich habs noch nicht mit höheren Details probiert weils so läuft und auch gut aussieht.
-
EXE Datei mit Paramtern öffen und Rückgabewert empfangen
Das sollte mit GetExitCodeProcess funktionieren.
-
Wer will helfen?
Hmm... Januar 2002, da sollte man doch schon mal nen Blick hierein geworfen haben;)
-
Arrays
Naja das hier ist kein Hausaufgabenservice;) Außerdem sollten sich die Fragen mit ein paar Grundkentnissen und einfachen Überlegungen recht schnell lösen lassen. Bei der 2ten Frage musst du dir überlegen welcher Datentyp am passensten wäre um die jeweiligen Daten aufzunehmen. In der 3ten musst du nur jedes Element mit einem Startwert versehen, wofür gewöhnlich die NULL genommen wird.
-
Zahlen in COBOL
Ah, vielen Dank:)
-
Zahlen in COBOL
Hi, ich muss mich zur Zeit in COBOL einarbeiten und da ist mit was aufgefallen. Wenn ich mir eine Variable für Zahlen anlege mache ich das ja (irgendwie) so: 01 Anzahl PIX9(5). Ich habe gelesen das da intern dann 5 Byte angelegt werden die nur die Zeichen 0-9 enthalten dürfen. Bedeutet das das es in COBOL keine wirklichen Variablen für Zahlen gibt (sowie Integer oder so), sondern alles in Strings bzw. Zeichen gespeichert wird? Das braucht doch viel mehr Speicherplatz und ich kann mir Vorstellen das der PC damit auch sehr viel langsamer rechnet als mit "echten" Zahlen. Gruß Guybrush
-
Verkettete Listen
Was meinst du mit "n Pointer auf n Pointer zeigt"? Du musst dir das einfach so vorstellen das du verschiedene Elemente in deiner Liste hast. Jedes dieser Elemente hat einen Verweis (Pointer) auf das nächste Element in der Liste und evtl. auch auf das Vorherige.
-
Verkettete Listen
Womit genau hast du denn Probleme?