Zum Inhalt springen

Klotzkopp

Mitglieder
  • Gesamte Inhalte

    9.912
  • Benutzer seit

  • Letzter Besuch

  • Tagessiege

    3

Beiträge von Klotzkopp

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

  2. Original geschrieben von mst

    2. Das Problem mit der Listbox verstehe ich nicht. Wenn du die Funktion des Buttons hast OnBtnClick() wie auch immer und da drin der Listbox Elemente hinzufügst mit AddString() müßte das doch eigentlich funktionieren, oder nicht?

    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]

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

  4. Original geschrieben von Dorothea

    aber das problem ist trotzdem dasselbe. wenn im unteren teil steht:

    pAnlagen[iIndex].strForm = strForm;

    kann das nicht gehen, da pAnlagen NULL ist. ich denke, für pAnlagen müsste vorher auch mit new speicher angefordert werden.

    Wird ja auch. Der neu allokierte Speicher wird aber zuerst dem Zeiger pDummy zugewiesen, damit der bestehende Array kopiert werden kann.

    zu der for-schleife: wie kommt man jemals da rein, wenn iSize erst innerhalb dieser Schleife erhöht wird?
    Der Schleifenkörper besteht nur aus einer einzigen Anweisung:

    pDummy=pAnlagen;

    Der Rest des if-Blocks, und damit auch die Erhöhung von iSize, steht außerhalb der Schleife. Das for hat keine geschweiften Klammern, dadurch geht der Schleifenkörper nur bis zum nächsten Semikolon.

  5. wenn du später beim ersten durchlaufen der schleife sagst, pDummy[0] = pAnlagen[0], wird pDummy auch NULL. und wenn du darauf zugreifen willst, erhältst du die sattsam bekannte meldung "access violation at XXXX".
    Diese Schleife wird beim ersten Mal gar nicht durchlaufen, weil iSize 0 ist, und die Schleifenbedingung i<iSize lautet.

    ausserdem könnte ich mir vorstellen, dass der versuch, delete auf einen NULL-Zeiger anzuwenden, ebenfalls einen absturz verursacht.
    Nein, das ist kein Problem, ein delete auf einen NULL-Zeiger bewirkt gar nichts.
  6. <STRONG>

    	/* Falls ich schon eine Datei durchsucht habe, ist nScnt > 0, da ich mit jedem Wort nScnt erhöhe. Folgendes mache ich, damit die Wörter die ich bereits
    in die index.tmp.txt geschrieben habe (welche ich am ende in index.txt umbenannt habe), auch weiterhin in der Datei stehen, und der Rest nur angehängt wird */
    if(nScnt>0)
    {
    nD = 2;
    while(nD!=EOF)
    {
    nD = fgetc(FX);
    szAusgelesenes[0] = nD;
    fwrite(szAusgelesenes, sizeof(char), 1, FW);
    }
    fclose(FW);
    fclose(FX);
    FX = fopen(chB, "r");
    FW = fopen(chA, "a+");
    }[/code]

    </STRONG>

    Hier liegt der Fehler. Wenn fgetc EOF (-1) zurückliefert, schreibst Du trotzdem noch ein Zeichen in die Datei. Dabei brichst Du den int, den fgetc geliefert hat, auf einen unsigned char herunter, so dass 255 übrig bleibt, was dem Y mit zwei Punkten entspricht.

    Besser wäre:

    while( EOF != ( nD = fgetc(FX) ) ) {...

    Dann kannst Du Dir auch die Vorbelegung von nD sparen.

    Ach ja, anstelle von fclose und anschließendem fopen kannst Du auch einfach fseek(FX, 0, SEEK_SET) benutzen.

  7. Die Parameter von basic_string::substr sind nicht Von,Bis sondern Von,Anzahl!

    Versuchs mal mit

    l_searchString_s = l_completeString_s.substr(l_completeString_s.find("~",0)+1,l_completeString_s.size() - l_completeString_s.find("~") -1 );

    Falls das nicht hilft, setz mal die -1 am Ende auf -2. Kann ja sein, dass l_completeString_s schon ein nicht druckbares Zeichen am Ende hat.

    <FONT COLOR="#a62a2a" SIZE="1">[ 19. Dezember 2001 15:25: Beitrag 3 mal editiert, zuletzt von Klotzkopp ]</font>

  8. Das liegt daran, dass Dein Editor ANSI benutzt, die Konsole aber ASCII. Und die Codes für Umlaute sind in diesen beiden Codierungen unterschiedlich.

    Wenn Du Strings direkt ausgeben willst, dann kannst Du statt der Umlaute Escape-Sequenzen benutzen:

    ä \x84

    ö \x94

    ü \x81

    Ä \x8e

    Ö \x99

    Ü \x9a

    ß \xe1

    z.B. printf( "St\x94rung!" );

    Wenn Du eingelesene ANSI-Strings auf der Konsole ausgeben willst, dann könntest Du sowas machen:

    for( char* p= pAnsiString; *p; p++ ) {
    switch(*p) {
    case 'ä':
    *p = 0x84;
    break;
    case 'ö':
    *p = 0x94;
    break;
    // usw.
    default:
    break;
    }
    }[/code]

  9. 	string s1( "01-12-06 15:39:32.465 0 Connecting to DB" );
    string s2( "Connecting to DB" );

    int i = s1.find( s2 );[/code]

    Da kommt bei mir 24 raus.

    Setzt doch mal einen Breakpoint auf die Zeile mit dem find, und prüf nach, ob in den Strings wirklich das drin steht, was drin stehen sollte.

    <FONT COLOR="#a62a2a" SIZE="1">[ 19. Dezember 2001 13:00: Beitrag 1 mal editiert, zuletzt von Klotzkopp ]</font>

  10. <BLOCKQUOTE><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Zitat:</font><HR>Original erstellt von Poldi:

    <STRONG>du mußt in der klammer mit angeben, wo er anfangen soll zu suchen.</STRONG>

    Nein, der zweite Parameter hat den Default-Wert 0.

    size_type find(const basic_string& str, size_type pos = 0) const;

  11. Verschieb die Implementierung von VAtoi in die Datei DataTimeEdit.cpp, und lass in DataTimeEdit.h nur die Deklaration stehen:

    bool VAtoi(CString str, int &res);

    Das gleiche solltest Du mit allen Funktionen machen, deren Implementierungen in .h-Dateien stehen, um zukünftige Linkerfehler zu vermeiden.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...