Wprowadziłem zmiany w kodzie zgodnie z sugestią:
(RichEdit1.Lines[0] na RichEdit1.Lines.Strings[0] oraz usunięciu '' po ExtractFilePath(Application.ExeName))
Niestety nie pomogło.
Wstawiłem więc procedurę usuwającą te ć,ł,ę itp choć takie rozwiązanie nie jest zbyt eleganckie.
Być może błędy wynikają z tego że są przenoszone znaki formatujące z początku dokumentu. Są one takie:
{\rtf1\ansi\ansicpg1250\deff0\deflang1045{\fonttbl{\f0\fswiss\fcharset0 Courier New;}{\f1\fswiss\fcharset0 Arial;}{\f2\froman\fcharset0 Times New Roman;}{\f3\fnil MS Sans Serif;}}
\viewkind4\uc1\pard\keepn\sb100\sa100\lang1033\f0\fs20\u281?\v\f1\fs16\u281?\u322?\u281?'f3\b\v0\f2\fs36
A to jest kod już po zasugerowanych zmianach. Tu zapisuje do pliku .rtf ale jeśli do .txt to jest tak samo.
var
Form1: TForm1;
var Linia0:string;
var NazwaPli:string;
implementation
{$R *.dfm}
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin {procedura do zapisania pliku jeśli jeszcze nie istnieje}
RichEdit1.Clear;
RichEdit1.PasteFromClipboard;
If CheckBox2.Checked=true then
begin
RichEdit1.Lines.Add('Koniec dokumentu. MP');
end;
Form1.SpeedButton3.Click ;
If FileExists(ExtractFilePath(Application.ExeName)+'TekiTXT'+''+NazwaPli+'.rtf')
then ShowMessage('Plik o tej nazwie już istnieje')else
RichEdit1.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+'TekiTXT'+''+NazwaPli+'.rtf');
end;
procedure TForm1.SpeedButton2Click(Sender: TObject);
{procedura do zamiany pliku na nowy pod tą samą nazwą}
begin
If CheckBox1.Checked=true then
begin
RichEdit1.Clear;
RichEdit1.PasteFromClipboard;
If CheckBox2.Checked=true then
begin
RichEdit1.Lines.Add('Koniec dokumentu. MP');{wstawia linię tekstu na końcu dokumentu jeśli checkBox2 jest zaznaczony}
end;
Form1.SpeedButton3.Click ;
RichEdit1.Lines.SaveToFile(ExtractFilePath(Application.ExeName)+'TekiTXT'+''+NazwaPli+'.rtf');
end else ShowMessage('aby zamienić plik musisz zaznaczyć okienko');
end;
procedure TForm1.CheckBox1Click(Sender: TObject);{zabezpiecza przed przypadkowym naciśnięciem SpeedButtona2}
begin
If CheckBox1.Checked=true then SpeedButton2.Visible:=true;
end;
procedure OczyscLinie0;{procedura usuwa niewłaściwe znaki }
var n:byte;
begin
Form1.LabeledEdit3.Text:= Form1.RichEdit1.Lines.Strings[0];
For n:=1 to 20
do begin
Linia0:=Form1.RichEdit1.Lines.Strings[0];
NazwaPli:=Linia0;
If ((Linia0[1]='ę')or(Linia0[1]='ł')or(Linia0[1]='ć')or(Linia0[1]='ś')or(Linia0[1]='ą')or(Linia0[1]='ź')or(Linia0[1]='ó'))
then
begin
Linia0:=Copy(Linia0,2,Length(Linia0)-1);
end;
Form1.RichEdit1.Lines.Strings[0]:=Linia0;;
end;
Form1.LabeledEdit2.Text:= Linia0;
NazwaPli:=Linia0;
Form1.LabeledEdit4.Text:= NazwaPli;
For n:=1 to 20
do begin
If ((NazwaPli[1]='ę')or(NazwaPli[1]='ł')or(NazwaPli[1]='ć')or(NazwaPli[1]='ś')or(NazwaPli[1]='ą')or(NazwaPli[1]='ź')or(NazwaPli[1]='ó'))
then
begin
NazwaPli:=Copy(NazwaPli,2,Length(NazwaPli)-1);
end;
end;
Form1.LabeledEdit1.Text:=NazwaPli;
end;
procedure TForm1.SpeedButton3Click(Sender: TObject);{procedura czyszcząca jest uruchamiana buttonem}
begin
OczyscLinie0;
end;
end.