15. august 2002 - 17:02Der 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.
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,'{\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,'\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;
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;
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.