Ĺadny brzuch
Moj program zapisuje dane z uzyciem SaveDialog. Jak zrobic tak zeby, gdy user napisze w polu nazwa pliku (jak otworzy sie okno SaveDialog) np. "costam" to zeby program dodawal do nazwy .txt (zeby bylo ,,costam.txt) a gdy user napisze "costam.txt" to zeby nie dodawal rozszerzenia (zeby nie wyszlo ,,costam.txt.txt")
Memo1->Lines->SaveToFile(SaveDialog1->FileName + ".txt");
Ale jak sprawdzić czy znajduje się już txt
SaveDialog1->Execute(); AnsiString test = SaveDialog1->FileName; int x = test.Length(); int y = test.LastDelimiter(".txt"); if (y == x) { Memo1->Lines->SaveToFile(SaveDialog->FileName); } else {Memo1->Lines->SaveToFile(SaveDialog1->FileName + ".txt");}
Wydaje mi się że powinno działać
Moj program zapisuje dane z uzyciem SaveDialog. Jak zrobic tak zeby, gdy user napisze w polu nazwa pliku (jak otworzy sie okno SaveDialog) np. "costam" to zeby program dodawal do nazwy .txt (zeby bylo ,,costam.txt) a gdy user napisze "costam.txt" to zeby nie dodawal rozszerzenia (zeby nie wyszlo ,,costam.txt.txt")
W ogóle nie napisałeś jakiego kompilatora używasz... :/ ale zakładam że Borland C++ Builder, a skoro tak to przecież w zakładce "Object Inspector" w "Filters" (w tym pustym oknie jak klikniesz na "..") możesz wpisać o jakie pliki Ci chodzi.
To samo się tyczy OpenDialog.
Uzywam Borland C++ Builder. W Object Inspector w polu Filter wpisujemy rozszerzenia tylko po to, aby uzytkownik wiedzial o jakie pliki chodzi. Nawet po wpisaniu ,,pliki tekstowe" i ".txt" nadal po wpisaniu w polu nazwa pliku rozszerzenia nie sa dodawane.
ehh...
zapomniałem o jednym drobnym szczególe, a bardzo istotnym:
tzn
U mnie funkcja zapisująca do pliku wygląda tak:
void __fastcall TFrm_file_memory::Bt_savefClick(TObject *Sender) { if (Save_file->Execute()) { // zapisanie pola memo Memo_main->Lines->SaveToFile(Save_file->FileName+".txt"); } }
a funkcja odczytująca tak:
void __fastcall TFrm_file_memory::Bt_openfClick(TObject *Sender) { if (Open_file->Execute()) { Memo_main->Clear(); Memo_main->Lines->LoadFromFile(Open_file->FileName); } }
Zmienna "Memo_main" to pole memo w BCB6 gdzie wpisujesz coś tam. :)
Funkcja otwierająca plik nie musi zawierać takiego szczegółu jak
+".txt");
jak to było w funkcji zapisującej do pliku
Memo_main->Lines->SaveToFile(Save_file->FileName+".txt");
bo od tego jest filter BCB6.
Z nudów nawet zrobiłem taki programik, który odczytuje i zapisuje do pliku zwykły tekst. Jeśli chciałbyś go zobaczyć to podaj mi swój mail to Ci go wyślę.
Pozdrawiam!
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Memo1->Lines->SaveToFile(SaveDialog1->FileName + ".txt");
Ale jak sprawdzić czy znajduje się już txt
SaveDialog1->Execute(); AnsiString test = SaveDialog1->FileName; int x = test.Length(); int y = test.LastDelimiter(".txt"); if (y == x) { Memo1->Lines->SaveToFile(SaveDialog->FileName); } else {Memo1->Lines->SaveToFile(SaveDialog1->FileName + ".txt");}
Wydaje mi się że powinno działać
Moj program zapisuje dane z uzyciem SaveDialog. Jak zrobic tak zeby, gdy user napisze w polu nazwa pliku (jak otworzy sie okno SaveDialog) np. "costam" to zeby program dodawal do nazwy .txt (zeby bylo ,,costam.txt) a gdy user napisze "costam.txt" to zeby nie dodawal rozszerzenia (zeby nie wyszlo ,,costam.txt.txt")
W ogóle nie napisałeś jakiego kompilatora używasz... :/ ale zakładam że Borland C++ Builder, a skoro tak to przecież w zakładce "Object Inspector" w "Filters" (w tym pustym oknie jak klikniesz na "..") możesz wpisać o jakie pliki Ci chodzi.
To samo się tyczy OpenDialog.
Uzywam Borland C++ Builder. W Object Inspector w polu Filter wpisujemy rozszerzenia tylko po to, aby uzytkownik wiedzial o jakie pliki chodzi. Nawet po wpisaniu ,,pliki tekstowe" i ".txt" nadal po wpisaniu w polu nazwa pliku rozszerzenia nie sa dodawane.
ehh...
zapomniałem o jednym drobnym szczególe, a bardzo istotnym:
tzn
U mnie funkcja zapisująca do pliku wygląda tak:
void __fastcall TFrm_file_memory::Bt_savefClick(TObject *Sender) { if (Save_file->Execute()) { // zapisanie pola memo Memo_main->Lines->SaveToFile(Save_file->FileName+".txt"); } }
a funkcja odczytująca tak:
void __fastcall TFrm_file_memory::Bt_openfClick(TObject *Sender) { if (Open_file->Execute()) { Memo_main->Clear(); Memo_main->Lines->LoadFromFile(Open_file->FileName); } }
Zmienna "Memo_main" to pole memo w BCB6 gdzie wpisujesz coś tam. :)
Funkcja otwierająca plik nie musi zawierać takiego szczegółu jak
+".txt");
jak to było w funkcji zapisującej do pliku
Memo_main->Lines->SaveToFile(Save_file->FileName+".txt");
bo od tego jest filter BCB6.
Z nudów nawet zrobiłem taki programik, który odczytuje i zapisuje do pliku zwykły tekst. Jeśli chciałbyś go zobaczyć to podaj mi swój mail to Ci go wyślę.
Pozdrawiam!