Thread und externe Variablen
-
Hallo
Ich habe einen Thread, der aktuell und permanent über das Internet eine Datei ausliest und das Ergebnis in "s" speichert. Dieses "s" wird in einem Editfeld angezeigt.
Allerdings möchte ich die Variable "s" ausserhalb des Threads überschreiben, allein deswegen weil das Editfeld und s nicht gelöscht / aktualisiert wird mit dem neuen Inhalt sondern weil der Inhalt immer wieder angehängt wird.
Eigentlich wollte ich dass nach jeder Überprüfung aus dem Internet das editfeld gelöscht und die Variable "s" komplett neu ausgelesen wird, ohne das Zuvor anzuhängen.
Wie ich das anstellen soll ist mir bis jetzt noch unklar! Tips?
Danke und Gruss aus Austria
PrgmmR
-
void thread() { while (1) { std::string tmp = read_from_internet(); lock_mutex(); ::s = tmp; unlock_mutex(); ::PostMessage(...); } } void MyDialog::OnMessageXYZ() { lock_mutex(); SetDlgItemText(ID_BLAH, ::s.c_str()); unlock_mutex(); }
-
std::string ?? ist das noch MFC? also "s" wird folgendermassen ausgelesen (echo einer php-datei):
CString somecode, s; CInternetSession session("LiCheck",1,INTERNET_OPEN_TYPE_PRECONFIG); CStdioFile* pFile = NULL; CString strUrl("http://www.nfws.ch/inc/check_license.php?name="+checkname+"&key="+lizenz); try { pFile = session.OpenURL(strUrl,1,INTERNET_FLAG_TRANSFER_BINARY,NULL,0); if(pFile) { while (pFile->ReadString(somecode) != NULL) { s = s + somecode; } pFile->Close(); } } catch (CInternetException* e) { e->Delete(); session.Close(); CloseHandle(session); } s.Delete(0,1);Das Delete benötige ich weil PHP immer ca. 4 TABS Leerzeichen vor dem eigentlichen String macht. Also hab ich jetzt s. S kann ein langer text sein oder auch nur eine zahl.
Anschliessend wird "s" in ein Editfeld eingetragen.
m_ctlEdit.SetWindowText(s);Wie integriere ich das jetzt im Thread so, dass "s" bei jedem prüfen erneut eingetragen und NICHT nur angehängt wird? Beispiel: s wäre jetz "test".
Dann steht "Test" im Feld. anstatt aber neu zu laden steht da nicht mehr "Test" wie es sollte sondern "Test Test", eine sekunde später "test test test", also immer ein "s" mehr... das möcht ich eben verhindern und ich kam bisher auf keine anständige lösung..
-
Kann es sein, das Du s nicht vor jedem Aufruf initialisierst und dadurch den vorherigen Text mitschleppst? Das kann ich bei dem Codebeispiel nicht erkennen.
s = s + somecode;
-
shurehand schrieb:
Kann es sein, das Du s nicht vor jedem Aufruf initialisierst und dadurch den vorherigen Text mitschleppst? Das kann ich bei dem Codebeispiel nicht erkennen.
s = s + somecode;? wenn ich das s initalisiere, erhale ich das gleiche ergebnis
-
PrgmmR schrieb:
? wenn ich das s initalisiere, erhale ich das gleiche ergebnis
Dann machst Du es an der falschen Stelle.
-
Hallo PrgmmR ...
Wieso fragst Du mit dem gleichen Code hier im Forum wo ich doch schon gefragt hab?... Nur weil Du ca. 50km weiter Weg wohnst und mein Projekt als "Beispiel" erhalten hast musst nicht gleich Probleme lösen?
Naja, Deine Sache... , aber ich denke "wer suchet der findet", will heissen :erst suchen, dann posten.Greetz und Danke

lg
Wolf