AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

RichEdit Speichern/Laden

Ein Thema von gangs-taas · begonnen am 30. Aug 2009 · letzter Beitrag vom 31. Aug 2009
Antwort Antwort
Seite 1 von 2  1 2      
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#1

RichEdit Speichern/Laden

  Alt 30. Aug 2009, 12:20
Hey,
ich wollte mal fragen, wie ich das machen soll, dass ich RichEdit's mit Formatierung speichern und laden kann ...
also Speichern klappt ja mit RichEdit1.Lines.SaveToFile();
aber wenn ich das in eine normale .txt-datei speicher dann steht in dieser komisches zeugs mit drin
(ich vermute das das wegen der Formatierung ist)
soweit so gut.

wenn ich die Datei dann wieder in ein RichEdit-Feld lade sind zwar die Formatierungsangaben weg aber meine Formatierung ist nicht so wie ich die gespeichert hab, sondern garnicht vorhanden...


ps. in meiner txt datei steh ungefär sowas drin
(ist jetztn ur nen test-text)

{\rtf1\ansi\ansicpg1252\deff0\deflang1031{\fonttbl {\f0\fnil\fcharset238 Comic Sans MS;}}
\viewkind4\uc1\pard\li800\f0\fs24 6/Titel/30.08.2009/
\par \pard RichEdit1
\par test
\par test 123 323213131 bnb kjhkjhuihui
\par }


das mit \par und so ist nach dem laden zwar weg, meine formation ist aber trotzdem nicht vorhanden
wie könnte ich das lösen ?

danke schonmal
  Mit Zitat antworten Zitat
Chefx

Registriert seit: 13. Jun 2009
Ort: Radebeul
241 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: RichEdit Speichern/Laden

  Alt 30. Aug 2009, 12:35
wenn ich das richtig verstanden hab soll der dann wieder schön bunt sein.
bei mir geht das mit .txt oder willst du die formatierung nicht mehr haben also nicht bunt?
ein Sprichwort für Programmierer:
"Viele wege fürn zur EXE, aber ob sie funktioniert ist die andere Frage."
schau mal bei www.xlite.de.tc vorbei
  Mit Zitat antworten Zitat
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#3

Re: RichEdit Speichern/Laden

  Alt 30. Aug 2009, 13:05
also es ist so
ich habe diese komischen aufzählungszeichen darin
und hab abundan die FirstIndent option verändert
und das möchte ich nach dem laden wieder haben...
aber das klappt nicht ...

nachdem laden ist es werder eingerückt noch hat es diese aufzähungszeichen ...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#4

Re: RichEdit Speichern/Laden

  Alt 30. Aug 2009, 13:10
Wenn Du die Formatierungen beibehalten willst, stell PlainText des Richedit auf false und speichere unter der Endung *.rtf. Ansonsten PlainText auf true und Endung *.txt.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#5

Re: RichEdit Speichern/Laden

  Alt 30. Aug 2009, 13:41
meine formatierung bleibt trotzdem nicht erhalten -.-
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#6

Re: RichEdit Speichern/Laden

  Alt 30. Aug 2009, 14:04
Hallo,

sollte eigentlich funktionieren.
Wie sieht denn Dein Code aus zum Formatieren und Laden.
Das Speichern klappt ja offensichtlich, siehe #1

Öffne doch mal die gespeicherte Datei mit einem RTF-fähigen Editor z.B. Word etc., werden die Formatierungen dann interpretiert/angezeigt?
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
gangs-taas

Registriert seit: 24. Mär 2009
364 Beiträge
 
#7

Re: RichEdit Speichern/Laden

  Alt 30. Aug 2009, 14:13
ich hab kein word, aber open office zeigt meien formatierung auch nichtm it an


hier ist mein code :

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, Printers;

type
  TForm1 = class(TForm)
    Datum: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Seitenzahlen: TEdit;
    Speichern: TButton;
    Titel: TEdit;
    RichEdit1: TRichEdit;
    nach_links_einruecken: TButton;
    nach_rechts_ausruecken: TButton;
    Edit3: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Edit4: TEdit;
    Button3: TButton;
    Nummerieren_an: TButton;
    Laden: TButton;
    procedure TextClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    function Prüfen(Hilfsvar : integer; Text : String; var Örtchen : String) :boolean;
    procedure nach_links_einrueckenClick(Sender: TObject);
    procedure SpeichernClick(Sender: TObject);
    procedure nach_rechts_ausrueckenClick(Sender: TObject);
    procedure RichEdit1Change(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure TitelClick(Sender: TObject);
    procedure Neu;
    procedure Button3Click(Sender: TObject);
    procedure Nummerieren_anClick(Sender: TObject);
    procedure LadenClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Pfad : String;
  Ort_In : String;
  gespeichert : boolean ;
const ext = '.rtf';


implementation


{$R *.dfm}

procedure TForm1.nach_links_einrueckenClick(Sender: TObject);
begin
nach_links_einruecken.Tag := nach_links_einruecken.Tag + 5;
  Edit3.Text := IntToStr(nach_links_einruecken.Tag);
end;

procedure TForm1.nach_rechts_ausrueckenClick(Sender: TObject);
begin
nach_links_einruecken.Tag := nach_links_einruecken.Tag - 5;
Edit3.Text := IntToStr(nach_links_einruecken.Tag);
end;

procedure TForm1.Button3Click(Sender: TObject);
var
  printDialog : TPrintDialog;
  myPrinter : TPrinter;
  i, y : integer ;

begin
  // Create a printer selection dialog
  printDialog := TPrintDialog.Create(Form1);

  // If the user has selected a printer (or default), then print!
  if printDialog.Execute then
  begin
    // Use the Printer function to get access to the
    // global TPrinter object.
    // All references below are to the TPrinter object
    myPrinter := Printer;
    with myPrinter do
    begin
      // Start printing
      BeginDoc;

      // Set up the RichEdit font
      Canvas.Font := RichEdit1.Font;

      // Write out the page size
      Canvas.TextOut(40, 20, Titel.Text);
      y := 150;
      For i := 1 to RichEdit1.Lines.Count do
      begin
        Canvas.TextOut(40, y, RichEdit1.Lines[i]);
        y := y +130;
      end;

      // Finish printing
      EndDoc;
    end;
  end;
end;

procedure TForm1.Nummerieren_anClick(Sender: TObject);
begin
  RichEdit1.Paragraph.Numbering := TNumberingStyle(nsBullet);
end;

procedure TForm1.LadenClick(Sender: TObject);
var
Ort : String ;
begin
  Ort := Pfad + Seitenzahlen.Text + ext;
  try
    RichEdit1.Lines.LoadFromFile(Ort);
  Except
    ShowMessage('Fehler');
  end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
buttonSelected : Integer;
begin
if gespeichert = False then begin
  buttonSelected := MessageDlg('Willst du vorm beenden speichern ?',mtInformation ,mbYesNo,0);
  if (buttonSelected = mrYes) then
  begin
    if not (RichEdit1.Text[1] = '/') then
    begin
      RichEdit1.Text := (Seitenzahlen.Text+'/'+Titel.Text+'/'+Datum.Text+'/'+ #13#10) + RichEdit1.Text;
      Speichern.Click;
    end;
  end;
end;

end;

procedure TForm1.FormCreate(Sender: TObject);
var
Liste : Tstringlist;
Prüfstring,TempZählsTring : String ;
Zeile,i,Zähler : Integer;
begin
Pfad := Application.ExeName;
Pfad := Copy(Pfad,0,Length(Pfad)-4)+'/';
Ort_In := Pfad + 'Inhaltsverzeichnis' + ext;
Datum.Text := DateToStr(Date);
Liste := Tstringlist.Create;
RichEdit1.Text := '';
RichEdit1.Paragraph.Numbering := TNumberingStyle(nsBullet);
If (Prüfen(1,'1/Inhaltsverzeichnis/'+Datum.Text+'/',Ort_In) = True) Then
  begin
    Liste.LoadFromFile(Ort_In);
    Zeile := (Liste.Count - 1);
    Prüfstring := Liste[Zeile] ;
    TempZählString := '';
    i := Pos('/',Prüfstring);
    TempZählString := Copy(Prüfstring,1,i-1);
    Zähler := StrToInt(TempZählString);
    Inc(Zähler);
    Seitenzahlen.Text := IntToSTr(Zähler);
    end
  else
  Seitenzahlen.Text := '1';
end;

procedure TForm1.TextClick(Sender: TObject);
begin
RichEdit1.Text := '';
end;

procedure TForm1.TitelClick(Sender: TObject);
begin
Titel.Text := '';
end;

function TForm1.Prüfen(Hilfsvar : integer; Text : String; var Örtchen : String) :boolean;
var
Dokument : Tstringlist;
begin
  Dokument:= Tstringlist.Create;
  if not (FileExists(Örtchen)) then
    begin
      ForceDirectories(Pfad);
      If (Hilfsvar = 1) Then begin
        Dokument.Add(Text);
        Dokument.SaveToFile(Örtchen);
      end;
      Result := False;
    end
  Else
  Result := True;
end;

procedure TForm1.Neu ;
var
Liste : Tstringlist;
Prüfstring,TempZählsTring : String ;
Zeile,i,Zähler : Integer;
begin
  Liste := TStringlist.Create;
  Liste.Clear;
  RichEdit1.Text := '-';
  Titel.Text := 'Stichpunkte ' + Datum.Text ;
  If (Prüfen(1,'1/Inhaltsverzeichnis/'+Datum.Text+'/',Ort_In) = True) Then
  begin
    Liste.LoadFromFile(Ort_In);
    Zeile := (Liste.Count - 1);
    Prüfstring := Liste[Zeile] ;
    TempZählString := '';
    i := Pos('/',Prüfstring);
    TempZählString := Copy(Prüfstring,1,i-1);
    Zähler := StrToInt(TempZählString);
    Inc(Zähler);
    Seitenzahlen.Text := IntToSTr(Zähler);
    end
  else
  Seitenzahlen.Text := '1';
  RichEdit1.Tag := 0;
  Edit3.Text := IntToStr(RichEdit1.Tag);
  Edit4.Text := IntToStr(RichEdit1.Lines.Count);
end;
procedure TForm1.SpeichernClick(Sender: TObject);
var
ort : String ;
Liste : Tstringlist;
begin
  Liste := Tstringlist.Create;
  Liste.LoadFromFile(Ort_In);
  Liste.Add(Seitenzahlen.Text+'/'+Titel.Text+'/'+Datum.Text+'/');
  Liste.SaveToFile(Ort_In);
  Liste.Clear;
  if not (RichEdit1.Text[1] = '/') then
  begin
    RichEdit1.Text := (Seitenzahlen.Text+'/'+Titel.Text+'/'+Datum.Text+'/'+ #13#10) + RichEdit1.Text;
    Ort := Pfad + Seitenzahlen.Text + ext;
    RichEdit1.Lines.SaveToFile(Ort);
  end;
gespeichert := True ;
end;

procedure TForm1.RichEdit1Change(Sender: TObject);
var
buttonSelected : integer;
Liste : Tstringlist;
Datei : String;
Seitenzahl : Integer ;
begin
  RichEdit1.Paragraph.FirstIndent := nach_links_einruecken.Tag*4;
  If (RichEdit1.Lines.Count = 41) Then
    begin
      buttonSelected := MessageDlg('Du hast Mehr geschrieben als auf eine Seite passt' +#13#10 + 'Willst du nun speichern und eine neue Datei anlegen ?',mtInformation ,mbYesNo,0);
      if (buttonSelected = mrYes) then
      begin
        Liste := Tstringlist.Create;
        Liste.LoadFromFile(Ort_In);
        Liste.Add(Seitenzahlen.Text+'/'+Titel.Text+'/'+ Datum.Text+'/');
        Liste.SaveToFile(Ort_In);
        Liste.Clear;
        Liste.Text := Titel.Text + '/';
        Liste.Add(RichEdit1.Text);
        if not (RichEdit1.Text[1] = '/') then
        begin
            Datei := Pfad + Seitenzahlen.Text + ext;
            Liste.SaveToFile(Datei);
        end;
        Titel.Text := Titel.Text + ' II';
        SeitenZahl := StrToInt(Seitenzahlen.Text);
        Inc(Seitenzahl);
        Seitenzahlen.Text := IntToStr(SeitenZahl);
        RichEdit1.Text := '';
    end;
  end;
  Edit4.Text := IntToStr(RichEdit1.Lines.Count);
end;

end.
wpbei die druckfunktion noch nicht funktioniert ...
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#8

Re: RichEdit Speichern/Laden

  Alt 30. Aug 2009, 14:40
Hallo,

in RichEdit.Text ist die Formatierung nicht enthalten.
Ausschnitt aus Deinem Code:
   RichEdit1.Text := (Seitenzahlen.Text+'/'+Titel.Text+'/'+Datum.Text+'/'+ #13#10) + RichEdit1.Text; Mit der Zeile überschreibst Du die zuvor angelegten Formatierungen.

Ersetz mal die Zeile(n) durch:
Delphi-Quellcode:
  RichEdit1.SelStart := 0;
  RichEdit1.SelText := (Seitenzahlen.Text+'/'+Titel.Text+'/'+Datum.Text+'/'+ #13#10);
Wenn im Richedit formatierter Text enthalten ist kann man nicht mit der Eigenschaft Text zur Veränderung des RichEdit-Inhalts arbeiten.

Ps.:
function Prüfen(Hilfsvar : integer; Text : String; var Örtchen : String) :boolean; das funktioniert?
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.619 Beiträge
 
Delphi 12 Athens
 
#9

Re: RichEdit Speichern/Laden

  Alt 30. Aug 2009, 14:45
Neuere Delphi-Versionen akzeptieren anscheinend Umlaute, aber man sollte vielleicht doch besser darauf verzichten
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.387 Beiträge
 
Delphi 12 Athens
 
#10

Re: RichEdit Speichern/Laden

  Alt 30. Aug 2009, 18:31
mir ist, unabhängig von den Sonderzeichen, noch was aufgefallen:

wo gibst du die dynamisch erzeugten Ojekte (Sting Listen, Printer Dialog ) wieder frei ?

  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz