Textdatei Einlesen und Überprüfung auf .txt
-
Hallo zusammen,
ich arbeite erst seit kurzem mit dem c++ Builder, also verzeiht meine Unwissenheit.
Ich möchte auf Knopfdruck eine simple Text Datei in ein Memo-Feld laden. Klappt soweit ganz gut, nur wenn man fälschlicher Weise irgendeine andere Datei auswählt, stürzt das ganze ab. Also würd ich gern beim Laden der Textdatei überprüfen ob der Dateiname auf ".txt" endet. Nur wie? Und was bringt das Feld "Filter" im Eigenschaftsmenu des TOpenDialog, wenn zwar dasteht das nur *.txt Datein auswählen kann, aber trotzdem jede andere Datei ausgewählt werden kann?
Hoffe ihr könnt mir weiterhelfen!
Vielen Dank schonmal!
Und hier noch mein aktueller Stand:OpenDialog1->FileName = "";
if (OpenDialog1->Execute())
{
if (Memo1->Lines->Count > 0) Memo1->Clear();
Memo1->Lines->LoadFromFile (OpenDialog1->FileName);
}
-
.txt|.txt im Filter eintragen
-
Hallo
Und mit der Funktion ExtractFileExt kannst du zwischen Execute und LoadFromFile auch prüfen, welche Erweiterung die Auswahl wirklich hat.
bis bald
akari
-
Vielen Dank für eure Antwort,
hat geklappt!AnsiString FName = ExtractFileExt(OpenDialog1->FileName);
AnsiString txt = ".txt";
if (FName==txt)
{...geht bestimmt auch einfacher, aber funktionier erstmal
Ich bräucht das gleiche jetzt nochmal für die Speichern Funktion. Also für den TSaveDialog. Dort klappt das mit dem Filter leider auch nicht. Im "Speichern unter" Fenster wird zwar angezeigt, dass nur .txt Datein angelegt werden können, aber wenn man ".txt" nicht extra an den Dateinamen ranschreibt, wird auch keine Textdatei angelegt. Irgendwie kapier ich den Filter nicht.
Wär schön wenn ihr mir nochmal auf die Sprünge helft.
Danke schonmal!!!
-
Hallo
Der Filter wirkt ausschließlich auf die Dateiliste im Dialog, und verändert nicht den vom Benutzer eingegeben Dateinamen. Den must du nach dem Dialog selber prüfen und ggf. modifizieren. Mit der Funktionen ChangeFileExt geht beides schnell und einfach.
/Edit : Oder nimm die Abkürzung von DocShoe
bis bald
akari
-
Setz´ das
DefaultExt
Attribute mal auftxt
.