SaveDialog nadpisanie pliku tekstowego z memo

0

Cześć

Jak za pomocą SaveDialogs nadpisać plik tekstowy z memo

Czyli wskazuje w oknie na plik i zamiast utworzyć nowy o takiej samej nazwie nadpisuję go (dodaje kolejne linie z memo.

procedure TForm3.NadpiszPlik1Click(Sender: TObject);
 begin
  if SaveDialog1.Execute then
   memo1.Lines.SaveToFile(SaveDialog1.FileName);
 end;
0

Jeśli wybrany plik istnieje (FIleExists), musisz go otworzyć/wczytać i dopisać linie na jego koniec.

0
  1. nadpisanie to jest ZASTĄPIENIE starego nowym, więc dokładnie to co robisz. To co chcesz uzyskać to DOPISANIE
  2. jak już napisał Patryk musisz "ręcznie" dopisać na końcu pliku. Można to zrobić zwykłym Assign Append Append albo TFileStream
0

Możesz zrobić tak jak pisali przedmówcy lub najpierw wczytać wartość pliku do TMemo poprzez

 TMemo.Lines.LoadFromFile()

i później tylko zapisać TMemo do pliku tak jak to robisz teraz ;)
Różnica jest taka, że będziesz jednocześnie mógł zmieniać cały plik, a nie skupiać się tylko na ostatniej linii.

0

Dziękuje ślicznie za rady czyli mam otworzyć fizycznie OpenDialog i ręcznie nadpisać
wybaczcie dopiero zaczynam obsługę plików a potrzebuje właśnie nadpisać
jakoś nie umiem tego w savedialogs poskładać

0

Należy edytować plik:
Pliki
Ścieżkę do pliku bierzesz z SaveDialog.FileName, otwierasz ten plik do edycji, a następnie w pętli za pomocą procedury Writeln zapisujesz (dopisujesz na końcu) kolejne wiersze z TMemo.

0

Dzięki za pomoc i Szczęśliwego Nowego Roku :)

Niestety ugrzęzłem z tym dla Was to proste ale ktoś kto zaczyna to czasami jest porażka.
Kombinuje na wszystkie sposoby no nic będzie bez nadpisywania może przejdzie,
każdemu wolno mieć zaćmienie umysłu :)

0

Pokaż jak kombinowałeś, pomożemy dalej - poddając się, niewiele z tego wszystkiego wyniesiesz, poza zmarnowanym czasem.

0

Teraz to już nie ma co pokazać teraz to już jest frustracja teraz bez zastanowienia sam wiem że czego nie zrobię nie ma racji bytu.
Jutro się dowiem na zajęciach i powiem k.... gdzie ja miałem głowę ale dzięki naprawdę i rady
Pozdrawiam

0

Jak za pomocą SaveDialogs nadpisać plik tekstowy z memo

Po pierwsze, SaveDialog nie służy do jakichkolwiek operacji na plikach (modyfikacji, nadpisywania czy dopisywania); Komponent ten umożliwia jedynie otwarcie systemowego okienka do wyboru lokalizacji, dając użytkownikowi podgląd na zawartość jego dysku; Wybrana lokalizacja dostępna jest w postaci zwykłej ścieżki - to tyle, nic więcej;

Po drugie, komponent Memo nie jest w żaden sposób połączony z jakimkolwiek plikiem i nie ma żadnej wiedzy o tym, skąd pochodzi zawarty w nim tekst; Komponent ten może mieć tekst załadowany z dowolnego źródła (strumienia, pliku), może też mieć ten tekst wpisany przez użytkownika lub wklejony ze schowka;

Tak więc masz trzy osobne elementy:

  • Memo z tekstem, który ma zostać zapisany do pliku,
  • SaveDialog, umożliwiający wybranie lokalizacji i nazwy pliku docelowego,
  • plik na dysku, który może zostać nadpisany lub nie;

Aby umożliwić użytkownikowi zapis zawartości Memo do pliku, którego lokalizacja oraz nazwa wybrane zostaną przez SaveDialog, wystarczy poniższy kawałek kodu (zakładając, że SaveDialog jest komponentem umieszczonym na formularzu):

if SaveDialog.Execute() then
  Memo.Lines.SaveToFile(SaveDialog.FileName);

1 użytkowników online, w tym zalogowanych: 0, gości: 1