CFile mit Systemvariablen als Pfad?

athlon

Mitglied
C:\\Dokumente und Einstellungen\\athlon\\Anwendungsdaten
ist ja angeblich als %APPDATA% gespeichert.

Wenn ich aber mit
Code:
CFile datei( "%APPDATA%\\MeinProgramm\\datei.txt", CFile::modeRead );

versuche die Datei zu öffnen bekomm ich ne Fehlermeldung dass die Pfadangabe ungültig sei.

Kann mir jemand sagen wie das funktioniert?

->Falls es so nicht funktionieren sollte die Appdata steht in der registry als REG_SZ ->wenn ich das ausgelesen habe als chAppdata
wie kann ich das dann verwenden?
 
Nimm dir ein paar CStrings und setzt den Pfad korrekt zusammen. Du musst den Platzhalter %APPDATA% durch seinen Wert ersetzen (den du dir aus der Registry oder wo auch immer geholt hast).

Code:
//herausfinden, welchen Wert AppData hat...
CString a = WasImmerAppDataAuchBedeutet(); 

//Pfad zusammenbasteln
CString b = "\\MeinProgramm\\datei.txt";
CString c = a + b;

//File öffnen
CFile datei( c, CFile::modeRead );
...
 
Vielen Dank!

Und wo wir schon dabei sind:

Code:
CFile datei( c, CFile::modeRead );
TCHAR str[1000];
datei.Read( str, sizeof( str ) );
datei.Close();
m_strEdit1 = str;
UpdateData( FALSE );
Damit lese ich die Datei dann in ein Eingabefeld.
Aber: Statt Zeilenumbrüchen macht er komische kästchen [] und den rest der 1000Zeichen füllt er ebenfalls mit [].

Wie kann ich das ändern?
 
pack dir dein TCHAR in einen CString !
Mit dem CString kannst du den rest hinten abschneiden und die [] ebenfalls rausfiltern!

Code:
char lesetextUser[1000]="";
CString DName ="deteiname.txt";´
CFile ExDateiUser(DName,CFile::modeRead);		
ExDateiUser.Read(lesetextUser, 1000);  // Lese Datei
CString hilfUser = lesetextUser ;	         // Dateiinhalt in CString
int x=( hilfUser.ReverseFind( '~' ));	// Position des letzten Trennzeichen
hilfUser = hilfUser.Left(x+1);           //Hinterm letzten Trennzeichen Müll abschneiden

das sollte die dabei helfen! :)
so oder so ähnlich sollte es bei dir auch funzen!
Sonst schau mal in der MSDN nach da werden alle Methoden von CString erklärt
CString ist sehr mächtig
sven
 
Zuletzt bearbeitet:
Abgesehen davon, dass die Datei wahrscheinlich nicht 1000 Zeichen lang ist,, hast du wahrscheinlich ein Problem mit "\r\n" versus "\n". Ich nehme mal an, dass in der Datei als Zeilenumbrüche "\n" drin steht. Dein Edit benötigt allerdings "\r\n". Da müsstest du die Umbrüche ersetzen oder besser zeilenweise einfügen und dann immer den korrekten Zeilenumbruch nachschieben.
 
@Specialguest

Ja: der Müll ist jetzt weg aber statt Zeilenumbruch aber ich immer noch
kleine schwarze kästchen [] wenn man sie kopiert und woanders einfügt dann ergeben sie das hier: " " Also unsichtbaren 2 zeichenbreiten müll...

@Kachelator

Wenn ich nicht 1000 angebe sondern 10 wandelt das Programm die letzten 3 Zeichen (er zeigt dann ja sowieso nur 10 statt 99? an)
in Müll um also leiber 1000 - oder gibt es eine möglichkeit die bytes in der datei zu zählen und dann damit die größe von char dateininhalt[] zu bestimmen?
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück