Mailslotnachrichten in den Speicher schreiben und wieder auslesen???



  • Hallo,

    Ich habe Mailslotnachrichten die ankommen, nun suche ich eine Möglichkeit sie in einen Speicher zu schreiben und sie auch wieder auszulesen und wen möglich
    sie nach bestimmten kriterien zu durchsuchen... also über den index vielleicht wieder zugreifen zu können...

    kann mir da jemand einen tip geben! Danke 😕



  • Was sind "Mailslotnachrichten"?



  • Hab mich da wohl etwas unverständlich ausgedrückt...

    Also es handelt sich um Debug-Nachrichten die über
    den Mailslot dem Programm übergeben werden...

    Beispiel des öffnen des Slots...

    void  TmyThread::createMailslot()
    {
            hMailslot = CreateMailslot(sCreateDebugMailSlot, 399, 5000, NULL);
    
            if(hMailslot == INVALID_HANDLE_VALUE)
            {
            /*Fehler: Mailslot konnte nicht geöffnet werden. Weitere Informationen
            über den Fehlschlag können über GetLastError() ermittelt werden */
    
             //Error Messagebox mit GetLastError()
             Application->MessageBox(("Mailslot konnte zum Empfang nicht geöffnet werden!\n Fehler: \n" + String(GetLastError())).c_str(),"Mailslotfehler",MB_OK | MB_ICONSTOP);
             //Statusbaranzeige über den Fehlschlag
    
             frm_main->StatusBar1->Panels->Items[0]->Text=" Mailslot ERROR!";
            }
            else
            {
            /*hMailslot ist ein gültiges HANDLE für den Mailslot und kann im
            Weiteren für Lesezugriffe mit ReadFile benutzt und muss mit
            CloseHandle() geschlossen werden */
    
             //Statusbaranzeige des erfolgreich geöffneten Mailslot
             frm_main->StatusBar1->Panels->Items[0]->Text="  Mailslot erfogreich geöffnet..";
            }
    
    }
    


  • Und was genau ist jetzt das Problem? Du liest die Nachrichten per ReadFile in einen Buffer und schreibst diesen z.B. als String in eine StringList. Pseudocode:

    char *buf = new char[bufsize+1];
    ReadFile(..., buf, ...);
    list->Add(buf);
    ...
    delete [] buf;
    


  • Danke 🙂

    hätte ich normal auch selber drauf kommen müssen... 🙄


Anmelden zum Antworten