Datei öffnen
-
Hi,
ich hoffe, dass das hier mit reingehört. Wo anders hab ich dafür keinen Platz gefunden.
Also mein Problem is folgendes.Ich muss n Installationsskript mit InstallShield erstellen. N Problem hab ich aba in meinem Skript.
Ich hab ne *.exe-Datei, in der als Textstring ne Versions- und Revisionsnummer in Klartext drinsteht. Die Datei würd ich aba gern im Textmodus öffnen.
Einfach umbenennen und dann versuchen zu öffnen geht nich. Scheinbar liegt's dann doch an der Codierung der Datei.
Hat jemand ne Idee, wie ich also ne *.exe-Datei auf die Art lesbar machen könnte? Bisher hab ich das hier, was allerdings NICHT geht:szDestFileName = szTempPath^"XMC.txt"; //Datei umkopieren XCopyFile(szSrcFile, szTempPath, COMP_NORMAL); MessageBox("Umkopiert", INFORMATION); //Datei umbenennen RenameFile(szTempPath^"XMC.exe", szTempPath^"XMC.txt"); //MessageBox("Umbenannt", INFORMATION); //Datei auswerten OpenFileMode(FILE_MODE_NORMAL); if(OpenFile(nvFileHandle, szTempPath, szDestFileName) < 0) then MessageBox("Datei konnte nich geöffnet werden", SEVERE); bFound = TRUE; endif; while(!bFound) if(GetLine(nvFileHandle, szFound) < 0) then //Fehler beim Lesen bFound = TRUE; NumToStr(svTempString, i); //Zeilennummer der gefundenen Zeile (bei Fehler 0) MessageBoxEx(szSearchForVersion, svTempString, SEVERE); MessageBox(szFound, WARNING); //gefundener Text in der Zeile (bei Fehler leer, da GetLine nix zugewiesen hat) else //Lesen erfolgreich if(StrFindEx(szFound, szSearchForVersion, 0) >= 0) then //Versionsstring wurde gefunden NumToStr(svTempString, i); MessageBoxEx(szSearchForVersion, svTempString, SEVERE); MessageBoxEx(szFound, "Gefundene Zeile", INFORMATION); bFound = TRUE; endif; endif; i++; endwhile; CloseFile(nvFileHandle); //Verzeichnis löschen DeleteDir(szTempPath, ALLCONTENTS); MessageBox("Verzeichnis gelöscht", INFORMATION);
Wenn ich mit meiner Datei-auswerten-Routine ne bestehende *.txt öffne, funktioniert es. Die umbenannte *.exe in eine *.txt führt in der Funktion GetLine(...) zu einem Fehler. Das Programm läuft dann zwar weiter, nur ich weiß noch immer nicht, ob überhaupt ne Versionsangabe in der Datei drin is.
Hoffe, ihr könnt mir helfen.
LG
Anti
-
In C hängt es normalerweise nicht vom Namen ab, wie die Datei geöffnet wird, sondern vom angegebenen Dateimodus (fopen() und iostreams öffnen die Dateien standardmäßig im Textmodus, mit "..b" bzw. ios::binary kannst du auf Binärmodus umstellen). Wo man das bei deiner Bibliothek umstellen kann, mußt du mal nachschlagen - vermutlich beim OpenFileMode()-Aufruf.
(PS: Eventuell würde es schon weiterhelfen, wenn du dazusagst, WELCHE Fehlermeldung kommt)