Ĺadny brzuch
Mam mały problemik:/
Po wpisaniu textu do RichEdit dodawana jest na samym końcu pusta linia. Pytanie: Jak ją usunąć?
Mój program opiera się na komponencie RichEdit, Listbox i jednym pliku textowym. Wszystkie dane wpisywane do RichEdit dopisywane są do jednego pliku. Sami rozumiecie, po dodaniu 100 różnych opisów w RichEdit w pliku textowym tworzy mi się 100 pustych linii, które niepotrzebnie zwiększają rozmiar mojej bazy. Dlatego też ponawiam pytanie: Jak pousuwać ostatnie "niepotrzebne, puste" linie w RichEdit?
Jestem początkujący, dlatego proszę o wyrozumiałość:)
W jaki sposób dopisujesz do pliku ??
Zawsze możesz sprawdzić czy ostatnia linia RichEdita jest pusta i jeżeli jest to usunąć ją ...
do czego wykorzystujesz tu LIstBoxa, bo może on coś tu miesza. Przy przepisywaniu tekstu do pliku wyntnij znak konca wiersza i powrotu karetki
TReplaceFlags flag; flag << rfReplaceAll; DobryString = StringReplace(ZlyString,"\r\n", "",flag);
Witaj.
Niestety nie możesz użyć tu funkcji StringReplace, gdyż spowoduje to usunięcie znaków nowej linii także przy "właściwych" końcach linii. Proponuję tak:
var i: cardinal; vText: string; begin vText := RichEdit1.text; //tekst RichEdita do zmiennej for i := Length(vText) downto 0 do //sprawdzamy cały tekst od końca begin if (vText[Length(vText)] in [#13, #10]) then //jeśli ostatni znak jest końcem linii Delete(vText, Length(vText), 1); //to go kasujemy end; RichEdit1.Text := vText; //i wstawiamy całość do RichEdit end;
Użytkownik p1101 edytował ten post 07 lipiec 2006, 10:51
no to może przecieżzastosować StringReplace na sotatnije lini. Wycina ostatnia linie, przepuszca ją przez StringReplace a następnie to co otrzyma dokleja do tekstu z którego ją odciął i całość wrzuca do pliku.
procedure TForm1.Button1Click(Sender: TObject); var liczbaWierszy : integer; wiersz : string; i : integer; begin LiczbaWierszy := RichEdit1.Lines.Count; for i := 0 to LiczbaWierszy -1 do begin wiersz := RichEdit1.Lines.Strings[i]; IF wiersz = '' then RichEdit1.Lines.Delete(i); end; end;
O takie coś Ci chodziło ? Możesz sobie te procke wstawic np. przy uruchamianiu programu zeby usuwał puste linie w RichEdit, albo zaraz przed zapisem do pliku
Użytkownik Private edytował ten post 07 lipiec 2006, 14:06
@Private tylko, że tu chodzi o puste linie na końcu. Twój kod usunie też puste linie w środku tekstu - a co jeśli odstęp jednej linii jest w tekście zamierzony?
Jak sprawdzałem swój kod to działał bez zarzutów :)
@Private tylko, że tu chodzi o puste linie na końcu. Twój kod usunie też puste linie w środku tekstu - a co jeśli odstęp jednej linii jest w tekście zamierzony?
Jeśli to nie to, to sie więcej w tym temacie nie oddzywam bo nie bardzo czaje o co chodzi :P No chyba ze mi ktoś wytłumaczy łopatologicznie :D
richedit1.Text:=trimright(richedit1.text);
Użytkownik krajew4 edytował ten post 07 lipiec 2006, 16:19
Mam mały problemik:/
Po wpisaniu textu do RichEdit dodawana jest na samym końcu pusta linia. Pytanie: Jak ją usunąć?
Mój program opiera się na komponencie RichEdit, Listbox i jednym pliku textowym. Wszystkie dane wpisywane do RichEdit dopisywane są do jednego pliku. Sami rozumiecie, po dodaniu 100 różnych opisów w RichEdit w pliku textowym tworzy mi się 100 pustych linii, które niepotrzebnie zwiększają rozmiar mojej bazy. Dlatego też ponawiam pytanie: Jak pousuwać ostatnie "niepotrzebne, puste" linie w RichEdit?
Jestem początkujący, dlatego proszę o wyrozumiałość:)
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Po wpisaniu textu do RichEdit dodawana jest na samym końcu pusta linia. Pytanie: Jak ją usunąć?
Mój program opiera się na komponencie RichEdit, Listbox i jednym pliku textowym. Wszystkie dane wpisywane do RichEdit dopisywane są do jednego pliku. Sami rozumiecie, po dodaniu 100 różnych opisów w RichEdit w pliku textowym tworzy mi się 100 pustych linii, które niepotrzebnie zwiększają rozmiar mojej bazy. Dlatego też ponawiam pytanie: Jak pousuwać ostatnie "niepotrzebne, puste" linie w RichEdit?
Jestem początkujący, dlatego proszę o wyrozumiałość:)
W jaki sposób dopisujesz do pliku ??
Zawsze możesz sprawdzić czy ostatnia linia RichEdita jest pusta i jeżeli jest to usunąć ją ...
do czego wykorzystujesz tu LIstBoxa, bo może on coś tu miesza. Przy przepisywaniu tekstu do pliku wyntnij znak konca wiersza i powrotu karetki
TReplaceFlags flag; flag << rfReplaceAll; DobryString = StringReplace(ZlyString,"\r\n", "",flag);
Witaj.
Niestety nie możesz użyć tu funkcji StringReplace, gdyż spowoduje to usunięcie znaków nowej linii także przy "właściwych" końcach linii. Proponuję tak:
var i: cardinal; vText: string; begin vText := RichEdit1.text; //tekst RichEdita do zmiennej for i := Length(vText) downto 0 do //sprawdzamy cały tekst od końca begin if (vText[Length(vText)] in [#13, #10]) then //jeśli ostatni znak jest końcem linii Delete(vText, Length(vText), 1); //to go kasujemy end; RichEdit1.Text := vText; //i wstawiamy całość do RichEdit end;
Użytkownik p1101 edytował ten post 07 lipiec 2006, 10:51
no to może przecieżzastosować StringReplace na sotatnije lini. Wycina ostatnia linie, przepuszca ją przez StringReplace a następnie to co otrzyma dokleja do tekstu z którego ją odciął i całość wrzuca do pliku.
procedure TForm1.Button1Click(Sender: TObject); var liczbaWierszy : integer; wiersz : string; i : integer; begin LiczbaWierszy := RichEdit1.Lines.Count; for i := 0 to LiczbaWierszy -1 do begin wiersz := RichEdit1.Lines.Strings[i]; IF wiersz = '' then RichEdit1.Lines.Delete(i); end; end;
O takie coś Ci chodziło ? Możesz sobie te procke wstawic np. przy uruchamianiu programu zeby usuwał puste linie w RichEdit, albo zaraz przed zapisem do pliku
Użytkownik Private edytował ten post 07 lipiec 2006, 14:06
@Private tylko, że tu chodzi o puste linie na końcu. Twój kod usunie też puste linie w środku tekstu - a co jeśli odstęp jednej linii jest w tekście zamierzony?
Jak sprawdzałem swój kod to działał bez zarzutów :)
@Private tylko, że tu chodzi o puste linie na końcu. Twój kod usunie też puste linie w środku tekstu - a co jeśli odstęp jednej linii jest w tekście zamierzony?

Jeśli to nie to, to sie więcej w tym temacie nie oddzywam bo nie bardzo czaje o co chodzi :P No chyba ze mi ktoś wytłumaczy łopatologicznie :D

richedit1.Text:=trimright(richedit1.text);
Użytkownik krajew4 edytował ten post 07 lipiec 2006, 16:19
Mam mały problemik:/
Po wpisaniu textu do RichEdit dodawana jest na samym końcu pusta linia. Pytanie: Jak ją usunąć?
Mój program opiera się na komponencie RichEdit, Listbox i jednym pliku textowym. Wszystkie dane wpisywane do RichEdit dopisywane są do jednego pliku. Sami rozumiecie, po dodaniu 100 różnych opisów w RichEdit w pliku textowym tworzy mi się 100 pustych linii, które niepotrzebnie zwiększają rozmiar mojej bazy. Dlatego też ponawiam pytanie: Jak pousuwać ostatnie "niepotrzebne, puste" linie w RichEdit?
Jestem początkujący, dlatego proszę o wyrozumiałość:)
