Avatar billede runem74 Nybegynder
15. august 2002 - 17:02 Der er 10 kommentarer og
1 løsning

Gem tekst fra richedit i *.rtf fil format uden brug af savedialog

Hej,

Jeg ønsker at gemme tekst fra en richedit uden brug af savedialog. Dvs. jeg har sti plus fil navn i en variable så jeg ønsker ikke at savedialog bliver aktiveret. Det kan godt værre at jeg stadig kan bruge savedialog uden at den spørg efter filnavn.

Jeg ønsker også at være i stand til at forlænge filen med mere tekst i rtf format senere.

Er der nogen der har en ide om hvordan dette gøres.

Mange hilsner,

Rune
Avatar billede zerohero Nybegynder
15. august 2002 - 17:05 #1
if SaveDialog1.Execute then
RichEdit1.Lines.SaveToFile(SaveDialog1.FileName);
Avatar billede zerohero Nybegynder
15. august 2002 - 17:08 #2
ups... læste ikke lige dit indlæg rigtigt, men hvorfor vil du ikke bruge SaveDialog????

var
  FileName : String;
begin
FileName := Edit1.Text;
RichEdit1.Lines.SaveToFile(FileName);
end;
Avatar billede runem74 Nybegynder
15. august 2002 - 17:14 #3
Det vil jeg heller ikke. Min title er uden brug af savedialog.

Det du angiver er udmærket men hvad skal jeg brug for at tilføj mere tekst i rich tekst format til filen. Skal jeg brug savetostream?

Jeg søger en append funktion som stadig gemmer i rich tekst format.
Avatar billede runem74 Nybegynder
15. august 2002 - 17:15 #4
Jeg prøver lige med savetostream...
Avatar billede runem74 Nybegynder
15. august 2002 - 17:17 #5
eller

RichEdit1.Lines.SaveToFile(FileName);
overskriver måske ikke den gamle file?
Avatar billede runem74 Nybegynder
15. august 2002 - 17:21 #6
ok,

RichEdit1.Lines.SaveToFile(FileName);

overskrivere den gamle fil så det kan ikke bruges
Avatar billede stoney Nybegynder
15. august 2002 - 17:23 #7
Jeg forstår ikkke helt deit spm.
Starter du med en tom richedit som vil appende det du skriver i den
til en eksisterende fil ?

Stoney
Avatar billede sblar Nybegynder
15. august 2002 - 17:29 #8
Her er lidt klipperi fra et par procedurer jeg selv bruger.
Gem Richedt'ens indhold i en StringList (kan ikke lige huskle syntaxen for dette) og kald StartRTFFile, AddToRTFFile og CloseRTFFile.

klip...
{ ********************************************************************************* }
{                          Håndtering af RTF-fil                                  }
{ Da TRichEdit ikke umiddelbart kan håndtere FormFeed, gemmes tekst                }
{ som en RTF-kodet tekstfil. Derved kan man styre hele formateringen og filen kan  }
{ stadig redigeres i f.eks. Word med formateringen i behold.                        }
{ ********************************************************************************* }
procedure StartRTFFile(FileName : string);
begin
  AssignFile(RTFFile,ChangeFileExt(FileName,'.RTF'));
  ReWrite(RTFFile);

  WriteLn(RTFFile,'{\rtf1\ansi\deff0\deftab720');  // RTF header

  WriteLn(RTFFile,'{\fonttbl{\f0\fnil MS Sans Serif;}');  // Fonttable
  WriteLn(RTFFile,'{\f1\fnil\fcharset2 Symbol;}');
  WriteLn(RTFFile,'{\f2\fswiss\fprq2 System;}');
  WriteLn(RTFFile,'{\f3\fnil Courier New;}');
  WriteLn(RTFFile,'{\f4\fnil\fcharset2 Courier New;}');
  WriteLn(RTFFile,'{\f5\fnil\fcharset1 MS Sans Serif;}');
  WriteLn(RTFFile,'{\f6\fnil\fcharset1 Times New Roman;}');
  WriteLn(RTFFile,'{\f7\fnil\fcharset1 Courier New;}}');

  WriteLn(RTFFile,'{\colortbl\red0\green0\blue0;}');    // Colortable

  WriteLn(RTFFile,'\margl1000\margr500\margt800\margb500');  // margener
  WriteLn(RTFFile,'\deflang1030\pard\plain\f5\fs16');

  WriteLn(RTFFile,'\par \plain\f6\fs36                                      Din overskrift');
  WriteLn(RTFFile,'\par');

  CloseFile(RTFFile);
end;


procedure AddToRTFFile(FileName : string; strBuffer : StringList);
var
  i  : Integer;
  RTFFile : TextFile;
begin // ShowTT
  AssignFile(RTFFile,ChangeFileExt(FileName,'.RTF'));
  Append(RTFFile);
    for i := 0 to strBuffer.Count - 1 do begin
      WriteLn(RTFFile,'\par' + strBuffer[i]);
    end;


    WriteLn(RTFFile,'\par \page');

  CloseFile(RTFFile);

end;

procedure EndRTFFIle(FileName : string);
begin
  AssignFile(RTFFile,ChangeFileExt(FileName,'.RTF'));
  Append(RTFFile);
  WriteLn(RTFFile,'\par \plain\f5\fs16');
  WriteLn(RTFFile,'\par }');

  CloseFile(RTFFile);
end;
Avatar billede runem74 Nybegynder
15. august 2002 - 17:50 #9
Jeg har tilføjet
var
RTFFile : TextFile;

Dette må værre nødvendigt

procedure AddToRTFFile(FileName : string; strBuffer : StringList);

giver

[Error] Unit1.pas(57): Undeclared identifier: 'StringList'
Avatar billede sblar Nybegynder
15. august 2002 - 18:36 #10
Som sagt er det klippet ud af noget andet så der kan være lidt mangler. StringList skal være TStringList.

Brug den noget i stil med dette:
  MyList := TStringList.Create;
  try
    MyList.AddStrings(MyRichEdit.Lines);
    StartRTFFile(filnavn);
    AddToRTFFile(filnavn, MyList);
    EndRTFFile(filnavn);
  finally
    MyList.Free;
  end;
Avatar billede runem74 Nybegynder
15. august 2002 - 21:48 #11
Det hjalp mange tak.

Rune
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester