Alle Beiträge von Klotzkopp
-
struct und C++-Builder
Du müsstest DoInsert einen Zeiger oder eine Referenz auf die Struktur übergeben, die Du in Zuweisen gefüllt hast. Dazu wäre es aber wohl besser, wenn Du die Struktur nicht erst in Zuweisen erzeugst. Aber was ganz anderes, ist Dir klar, das jedes Feld Deiner Struktur nur einen einzigen Buchstaben fasst?
-
system vs. ShellExecute
Das ist, mit Verlaub, Quatsch GetBuffer gibt einen Zeiger zurück, der nicht const ist, mit dem man also in den String schreiben kann. Das ist hier nicht nötig, weil ShellExecute den String nicht ändert. Letztendlich ist GetBuffer unsicherer, weil der zurückgegebene Zeiger Änderungen des Strings erst ermöglicht, auch wenn diese sich erst dann auswirken, wenn man ReleaseBuffer aufruft. Wenn man das nicht macht, dann ist GetBuffer sinnlos.
-
IP Adresse auslesen
GetAdaptersInfo kann das. Du musst dann nur noch rausfinden, welche IP zu Deiner DSL-Verbindung gehört. Wenn Du kein LAN oder so was hast, dann wird das natürlich einfach.
-
system vs. ShellExecute
Die Parameter musst Du getrennt angeben: CString prg="C:\\programme\\mmc97\\ftd"; CString param ="c:\\sandbox\\text.txt as20000 t.anthf.w.text.txt u=me"; ShellExecute( NULL, "open", prg, param, NULL, SW_SHOWDEFAULT );
-
system vs. ShellExecute
ShellExecute hat den großen Vorteil, dass es mit Anwendungen verknüpfte Dateien und URLs 'ausführen' kann. ShellExecute( NULL, "open", "calc", NULL, NULL, SW_SHOWDEFAUL ); started den Taschenrechner, ShellExecute( NULL, "open", "bla.doc", NULL, NULL, SW_SHOWDEFAULT ); öffnet die Datei mit Word, ShellExecute( NULL, "open", "http://www.google.com", NULL, NULL, SW_SHOWDEFAULT ); started den Browser usw. ShellExecute startet allerdings nicht den Kommandozeileninterpreter (command/cmd), daher funktioniert ShellExecute( NULL, "open", "dir c:\\", NULL, NULL, SW_SHOWDEFAULT ); nicht, weil dir ein interner Befehl ist, der in den Kommandozeileninterpreter eingebaut ist. In dem Fall kann man aber den Umweg über eine .bat-Datei gehen.
-
Funktionszeiger auf Objektmethoden
Ich hatte meine Abschlussprüfung im Sommer 2001. Die zweigeteilte, falls sich noch jemand erinnert Das 'RHS' kenne ich hauptsächlich von überladenen Operatoren. Ich nehme an, das soll für "Right Hand Side", also den Operanden auf der rechten Seite stehen.
-
Funktionszeiger auf Objektmethoden
Um Funktionszeiger zurückzugeben, würde ich einen typedef empfehlen, ohne würde das wohl ziemlich wild aussehen. Also das hier funktioniert: class A; // fwd decl typedef int (A::* pfoo_t)(char); class A { public: int foo( char c ) { return 0; } pfoo_t getfoo() { return foo; } }; int main(int argc, char* argv[]) { A a; pfoo_t p = a.getfoo(); return (a.*p)( 'x' ); } [/CODE] Weitere Info z.B. in der MSKB, Q94579. Auch die MSDN hat Infos über die Operatoren .* und ->*.
-
Ein Zeilenumbruch im Edit-Feld
Schon mal "\r\n" versucht?
-
Funktionszeiger auf Objektmethoden
Hilft Dir das weiter? class A { public: int a( char c ) { return 0; } }; class B { public: A m_A; int b() { int( A::*methodptr)(char) = m_A.a; return (m_A.*methodptr)( 'x' ); } }; [/CODE]
-
Problem mit Fehler Lvalue required
Ein l-value ist ein Ausdruck, der auf der linken Seite eines Zuweisungsoperators stehen kann. Einem Array (wie in Deinem Fall) kann kein Wert zugewiesen werden, auch wenn das Array nur ein Element hat. Wie Du das Problem löst, hängt davon ab, was EdNummer->Text ist. Wenn es ein char ist, dann wird Zuweisen.Nummer[0] = EdNummer->Text; funktionieren. Ist es aber auch ein char-Array oder ein char*, dann brauchst Du Zuweisen.Nummer[0] = EdNummer->Text[0]; Alles natürlich unter der Voraussetzung, dass Du wirklich nur ein Zeichen kopieren willst.
-
Umwandlung eines Strings
Mit Deiner Vorgehensweise holst Du den ASCII-Code des ersten Zeichens, und der ist beim Zeichen '1' eben 49. Was Du suchst, ist wahrscheinlich int n = atoi( pszString );
-
Stream-Funktion funktioniert nicht
@dirk12345: Jetzt muss ich aber doch mal fragen, warum in aller Welt Du in einer Member-Funktion Deiner Klasse eine weitere Instanz der Klasse erzeugst, nur um auf den zeile-Member zuzugreifen. Warum nimmst Du nicht den zeile-Member der Instanz, zu der die Funktion gehört?
-
XP: kein Zugriff mehr auf CD-ROM Laufwerke
Das Problem hatte ich auch. Grundsätzlich sollte man XP glauben, wenn es von der Installation irgendeiner Software abrät. Letztendlich habe ich XP neu installiert.
-
Zippen unter C++
Am einfachsten ist es wahrscheinlich, ein bestenden Zip-Tool von der Shell/Kommandozeile aus aufzurufen. Du kannst auch versuchen, die GNU-Zip-Sourcen (http://www.gzip.org/) in Dein Programm einzubinden. Bei CodeProject gibts was für MFC: http://www.codeproject.com/cpp/zip.asp
-
getopt und Flag's
Die manpage und ein paar Beispiele: http://www.tac.eu.org/cgi-bin/man-cgi?getopt+3 http://www.fh-wedel.de/~herbert/c-ss01/ueb10/ http://www.seifenblase.de/MudDocs/object_i_tools_getopt.html
-
Fenstername ermitteln
Mit FindWindowEx kannst Du den gesamten Fensterbaum durchsuchen, wenn Du für die Klassen- und Festertitel-Strings NULL angibst. Den Fenstertitel kannst Du dann mit GetWindowText holen.
-
Stream-Funktion funktioniert nicht
ostream ist kein Filestream. Nimm ofstream.
-
Frage zu diesem C-Code
Also ich komme auf 39 als weiteres mögliches Ergebnis (von undefiniertem Verhalten mal abgesehen).
-
Winsock - Fehler beim kompilieren!
Wenn Du windows.h includest, brauchst Du die winsock2.h nicht mehr, denn die wird schon in der windows.h mit eingebunden.
-
ClearScreen
MS Visual C++ hat zwar eine conio.h, aber da sind einige Methoden, wie eben clrscr oder auch gotoxy nicht drin, die bei anderen Compilern vorhanden sind.
-
Frage zu diesem C-Code
Kannst Du laut sagen. Ich tippe auf eine Übungsaufgabe oder auf eine Demonstration, was für schrecklichen Code man mit C produzieren kann
-
Frage zu diesem C-Code
Also, als erstes wird der Prä-Inkrementoperator ausgewertet, damit ist a 13. Dazu wird a++ addiert, der Post-Inkrementoperator macht a zu 14, gibt aber 13 zurück. Danach wird zu a (jetzt 14) das Ergebnis der Addition (26) addiert, und wir sind bei 40. Wer denkt sich denn so was aus?
-
Listbox von anderem Dialog füllen || Dialog nicht modal aufrufen
So wie ich Comroader verstanden habe, soll der Button einen anderen Dialog öffnen, und der hat eine Listbox. @Comroader: Schreib in der ersten Dialogklasse (die mit dem Button) eine Methode, die Listbox füllt, und ruf diese aus der OnInitDialog der anderen Dialogklasse (die mit der Listbox) auf. Dazu muss sich die zweite Dialogklasse einen Zeiger auf die erste merken: class CDlg1 { void FillListBox( CDlg2* pDlg2 ) { // pDlg2->m_ctlListBox->AddString... } void OnButtonXY() { CDlg2 dlg; dlg.m_pDlg1 = this; dlg.DoModal(); } }; class CDlg2 { CDlg1* m_pDlg1; CListBox m_ctlListBox; virtual BOOL OnInitDialog() { // ... m_pDlg1->FillListBox( this ); // ... } }; [/CODE]
-
CRC-Fehler
Es könnte auch daran liegen, dass Deine Version von rar älter ist als die, mit der die Dateien gepackt wurden. Die aktuelle Version ist 2.90, bei RarSoft erhältlich.
-
Kabeltypen ...
Ich glaube nicht, dass Dir die Bezeichnungen auf dem Kabel weiterhelfen, weil die Kabel die gleichen sind. Das Kabel weiß ja vorher nicht, wie die Stecker befestigt werden, und das ist der einzige Unterschied zwischen normalen und gekreuzten TP-Kabeln. Dir wird wohl nichts anderes übrig bleiben, als die Farben der Kabel an den Steckern zu prüfen, oder jedes Kabel auszuprobieren. Du kannst übrigens den Unterschied zwischen einem gekreuzten und einem normalen TP-Kabel nicht dadurch herausfinden, dass Du einen Stecker eines Kabels mit dem eines anderen vergleichst. Wie sandman schon sagte, wenn die beiden Stecker eines Kabels unterschiedlich sind, ist es ein gekreuztes Kabel.