Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi rtf (oder doc) Datei nach Formatierung getrennt zerlegen (https://www.delphipraxis.net/100817-rtf-oder-doc-datei-nach-formatierung-getrennt-zerlegen.html)

tr909 4. Okt 2007 11:01


rtf (oder doc) Datei nach Formatierung getrennt zerlegen
 
Moin. Ich habe folgendes Problem. Ich habe eine doc-Datei(kann aber auch nach rtf Konvertiert werden, falls es so einfacher ist), in der div. Artikel stehen. Diese haben als Überschrift jeweils ein 4-5 stellige Zahl, in einer bestimmten Formatierung, die sonst nirgends auftaucht. Nun will ich das gesammte Dokument automatisch zerlegen, und zwar so das ich für jeden "Artikel" eine eigene Datei habe.

Ich hab mir das in etwa so gedacht um an die Zeilen zu kommen, in denen ein neuer Artikel anfängt.


Delphi-Quellcode:
for i := 0 to JvRichEdit1.Lines.Count - 1 do
  begin
    JvRichEdit1.SelStart := count;
    count := count + Length(JvRichEdit1.Lines[i]);
    JvRichEdit1.SelLength := Length(JvRichEdit1.Lines[i]);
    if fsBold IN JvRichEdit1.SelAttributes.Style then
      Showmessage(IntToStr(i));
  end;
Leider bekomme ich als Ergebniss immer nur die letzte Zeile
Wenn es so wenigsten klappen würde, könnte ich danach ja noch die weiteren Kriterien untersuchen.
Am schönsten wäre ja sowas wie FindTextAttributes mit dem man gezielt nach z.B. Tahoma, 22pt, bold suchen könne

Gruß
tr909

tr909 4. Okt 2007 12:06

Re: rtf (oder doc) Datei nach Formatierung getrennt zerlegen
 
Das sollte eigentlich nach: VCL / WinForms / Controls

Gruß
tr909

tr909 5. Okt 2007 11:50

Re: rtf (oder doc) Datei nach Formatierung getrennt zerlegen
 
:roll:
*push*

tr909 6. Okt 2007 11:48

Re: rtf (oder doc) Datei nach Formatierung getrennt zerlegen
 
Also ich hab jetzt was das so funktioniert wie ich es mir vorgestellt habe:
Delphi-Quellcode:
procedure GetAttLines (const rich: TRichEdit;
  const style: TFontStyles;
  const size : integer;
  var list: TStrings);
var
  i,
  count,
  len : integer;
begin
  count := 0;
  for i := 0 to rich.Lines.Count - 1 do
  begin
    len := length(rich.Lines[i]);
    rich.SelStart := count;
    rich.SelLength := len;
    if ((rich.SelAttributes.Style = style) AND
      (rich.SelAttributes.Size = size)) then
      list.add(IntToStr(i));
    count := count + len + 2;
  end;
end;
Mein Fehler war das ich #13#10 am Zeilenende nicht mit berücksichtigt hatte ;)
Aber evtl. gibt’s ja noch eine andere Lösung.

Gruß
tr909

DP-Maintenance 6. Okt 2007 12:05

DP-Maintenance
 
Dieses Thema wurde von "sakura" von "Windows API / MS.NET Framework API" nach "VCL / WinForms / Controls" verschoben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:40 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