Probleme mit dem Prozentzeichen bei SetWindowText
-
Hey Leute,
ich habe ein kleines Problem beim Laden von Textfiles in eine Edit Box. Ich schreibe ein Windows-Terminalprogramm mit dem man CNC Programme über einen COMport von einer CNC Maschine senden,empfangen und archivieren kann. Das klappt auch wunderbar, die Programme werden im txt Format abgespeichert. Jetzt hab ich in dem Programm ein Editfeld und möchte das der Text dort angezeigt wird. Eigentlich ganz leicht, aber jetzt haben die CNC Programme die Eigenheit das sie mit einem Prozentzeichen am Anfang versehen sind,Beispiel %34768 .... CNC Programmcode....
das dient der Maschine als Programmnummernerkennung, ist also unbedingt nötig wenn ich die Textdateien als CNC Programme wieder auf die Maschine zurück transferieren möchte.
Jetzt ist aber das Problem dass, wenn ich die Textdatei auslese und den Text mit SetWindowText in die Editbox laden will nichts geladen wird und das liegt mit 100 prozentiger Sicherheit an dem Prozentzeichen am Anfang, denn wenn ich die Datei mit einem Editor öffne und es weg lösche wird der Text problemlos ausgegeben.Hier ist der Code mit dem ich es ausgebe:BOOL LoadTextFileToEdit(HWND hEdit, LPCTSTR pszFileName) { HANDLE hFile; BOOL bSuccess = FALSE; char notlpsz[2048]={0}; MessageBox(hEdit,pszFileName,"LoadTextFileToEdit",MB_OK); hFile = CreateFile(pszFileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); if(hFile != INVALID_HANDLE_VALUE){ DWORD dwFileSize; dwFileSize = GetFileSize(hFile, NULL); if(dwFileSize != 0xFFFFFFFF){ DWORD dwRead; if(ReadFile(hFile, notlpsz, dwFileSize, &dwRead, NULL)){ if(SetWindowText(hEdit,notlpsz))bSuccess = TRUE;} }CloseHandle(hFile); }return bSuccess;}
ReadFile funktioniert einwandfrei und der Text steht in notlpsz[], wird aber nicht ausgegeben, bzw nur bis zum Prozentzeichen (hab auch schon im Editor das % in die mitte des textes geschrieben, dann wird er bis zum Prozentzeichen ausgegeben).
Hab auch schon was anderes versucht:BOOL LoadTextFileToEdit(HWND hEdit, char*Filename) { BOOL bSuccess; char notlpsz[2048]={0}; FILE*dataptr;char trans;int z=0; dataptr=fopen(Filename,"r"); while(!feof(dataptr)){ fscanf(dataptr,"%c",&trans); if(trans=='%'){} else{notlpsz[z]=trans;}z++;} if(SetWindowText(hEdit,notlpsz)){bSuccess=TRUE;} return bSuccess; }
Hat aber den selben Effekt zur folge, ich bekomm es einfach nicht hin,
das macht mich traurig, bitte helft mir
Grüße...
-
Es gibt keine solche Einschränkung. Ich vermute eher, dass nach dem Prozentzeichen binäre Daten kommen. Schau Dir mal das ganze in einem Hex-Ediotr an.
-
ja, also erstmal danke für die antwort.
Das es diese Einschränkung nicht gibt weiß ich ja, deswegen ja meine Verwirrung.
Anscheinend hat es etwas damit zu tun das ich kein Unicode verwende. Hab mal den Code in ein anderes Texteditprogramm geladen un da steht vor dem Prozentzeichen ein anderes Zeichen. Nach ANSI Tabelle Zeichen 018, in ASCII gibts das gar nicht. In meinem Programm wird das nur als Leerzeichen dargestellt. Komisch ist nur, das nur in Verbindung mit dem Prozentzeichen dieser Effekt auftritt. Beide Zeichen einzeln sind kein Problem. Is mir echt ein Rätsel.
Wie dem auch sei, jetzt wo ich weiß was der Auslöser ist kann ich damit arbeiten. Ich lass einfach alle Zeichen die vor dem Prozentzeichen eintreffen ins leere laufen, dann funzt es....
Grüße