Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Delphi, memo textformat

Empfohlene Antworten

Hi,

ich brauche mal eure Hilfe!

Ich möchte ein memo oder besser Richedit von einer Datenbank (Access) einlesen lassen. Nun soll aber die Formatierung nicht verloren gehen ( Tabs und auch Fettschrift). Habt ihr eine idee wie man das anstellen kann?! Oder vielleicht auch andere Ideen ausser memo und Richedit?

THX

dragi

Du willst die Formatierung beibehalten?

Es kommt darauf an, was für ein Control zu verwendest. In der Regel hast du doch eine Möglichkeit den INhalt auf der Festplatte zu speichern. Tu das und schau was in der Datei dann gespeichert wurde und öffene die Datei nochmal mit deinem Programm und schau ob du die Formatierungen wieder hast. Wenn ja, dann kannst du ja diesen Inhalt ganz einfach in einem Memo-Feld in der Datenbank auch speichern... Das hängt aber wie gesagt stark daovn ab, was für ein Control du verwendest und was du genau machen willst.

Willst du eine universelle Lösung haben, (also eine Control-Unabhängige) dann ist es besser, du definierst dein eigenes Format in form von XML. Das ist dann aber schon bissele aufwendiger. und konvertierst diesen XML dann in belibige Controls.

Damit hast du natürlich den Vorteil, dass deine Daten nicht unlesbar sein werden, wenn du übermorgen, diesen Control mit einem anderen tauschen willst/musst.

Bist eben dann flexibel und unabhängig.

gruss

blear

Schau dir mal das Delphi-Beispiel RichEdit an (Gibts auf jeden Fall bei D5). Ich würde den Text in einer Datei speichern, in der Datenbank den Pfad zur Datei. Ein Memo-Feld ist für sowas nicht geeignet, da es keine Formatierungen darstellen kann.

Den Text in einer Datei zu speichern hat den Vorteil, daß man keine Größenbeschränkungen wg. Feldtyp hat. Eine Umsetzung in XML ist zwar sehr schön, aber auch sehr aufwendig. TRichEdit speichert den Text im RTF-Format, was ja ein Standard-Format ist.

Die Datei kann dann auch mit anderen RTF-fähigen Programmen (z.B. Notepad) bearbeitet werden, was aber nicht unbedingt sinnvoll ist.

BTW: Was für Zugriffskomponenten verwendest Du (dbExpress, ADOExpress...)?

MfG Frank

Also ich hab sowas schonmal gemacht... mal überlegen...

Wenn ich mir recht erinnere hab ich eine TRichEdit-Komponente genommen. In der Datenbank hatte ich ein String-Feld. Nach dem Auslesen aus der Datenbank hab ich den Inhalt des Feldes in die RichEdit-Komponente geschrieben:

RichEdit1.Text:= Query1.FieldByName('RichText').asString;

vor den Speichern das ganze umgekehrt:

Query1.Edit; // sicher ist sicher

Query1.FieldByName('RichText').asString:= RichEdit1.Text;

Das müsste so eigentlich hinhauen.

Der String ist allerdings grösser als die Buchstaben, die Ausgegeben (bzw. Eingegeben) werden, da ja die RichText Steuerzeichen mit dabei sind. Das Feld also nicht zu klein dimensionieren ;)

  • 7 Jahre später...

hallo,

mit formatierung speichern:

wie oben..

anstatt:

Query1.FieldByName('RichText').asString:= GetRtFText(RichEdit1);

mit der Function GetRtFText:

function GetRTFText(ARichEdit: TRichedit): string;

var

ss: TStringStream;

emptystr: string;

begin

emptystr := '';

ss := TStringStream.Create(emptystr);

try

ARichEdit.PlainText := False;

ARichEdit.Lines.SaveToStream(ss);

Result := ss.DataString;

finally

ss.Free

end;

end;

Greeze

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Konto

Navigation

Suchen

Suchen

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.