Autor Beitrag
JayK
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1013



BeitragVerfasst: Sa 20.08.05 14:11 
Hi,
wie sicherlich viele wissen ist RTF aus Tags aufgebaut (ähnlich HTML).
Wie kann ich jetzt Rich-Text-Dateien machen, die auch Tags enthalten sollen, die im Umfang des RichEdit nicht enhalten zu sein scheinen (mach mal ein {\footnote ...} mit RichEdit oder ein {\page} (Seitenumbruch) :roll:)?
Ich weiß nicht, wie ich da ranghen soll... :(

Schonmal Danke im vorraus
JayK


Zuletzt bearbeitet von JayK am So 21.08.05 20:39, insgesamt 1-mal bearbeitet
sibbe
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50

WIN XP Prof
D7 Prof
BeitragVerfasst: Sa 20.08.05 14:57 
Versteh ich das jetzt richtig, du willst quasi ein neues RTF-Format einführen bzw. dem alten Format neue Tags hinzufügen?

Das sollte doch nicht so schwer sein, die RTF-Datei einfach auslesen (am besten mit ner Case-Schleife oder sowas) und dann entsprechend auf die Tags reagieren. Außer deinem Programm wird das Format dann aber kein anderes Programm ohne Fehler lesen können...

Edit: Vielleicht doch nicht so einfach, hab mir grade mal ne RTF-Datei in Notepad angeguckt... Das sieht ja eklig aus...

_________________
Ideale sind wie Sterne: Man kann sie zwar nicht erreichen, aber man kann sich sehr wohl an ihnen orientieren.
(Blaise Pascal)
alias5000
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2145

WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
BeitragVerfasst: Sa 20.08.05 15:03 
Allgemein gesagt müsste das nicht soo schwierig sein. Du müsstest dann eine eigene TConversion schreiben. Wie du das machst, kann ich dir nicht sagen, aber schau dir auf der einen Seite mal die JVCL an, die hat ein paar eigene drin und such mal im Netz, dort gibt es viel Zeug zu sowas (leider wird da immer Syntaxhighlightening besprochen...). Gruß alias5000
JayK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1013



BeitragVerfasst: So 21.08.05 18:49 
user profile iconsibbe hat folgendes geschrieben:
Versteh ich das jetzt richtig, du willst quasi ein neues RTF-Format einführen bzw. dem alten Format neue Tags hinzufügen?

Keins von beiden so wirklich. RTF hat von Haus aus sowohl den {\footnote}- als auch den {\page}-Tag ;) Speicher mal eine Word/OpenOffice Datei mit zeilenumbrüchen und Fußnoten als RTF. Dann sollten die Tags irgendwo auftauchen (beide programme erzeugen glaub ich sehr unsauberes RTF ohne geziehlte Zeilenumbrüche oder sowas) :(

user profile iconsibbe hat folgendes geschrieben:
Außer deinem Programm wird das Format dann aber kein anderes Programm ohne Fehler lesen können...

Kein anderes Prog mit TRichEdit :mrgreen:, aber Word und OOo werdens bringen.
Außerdem brauch ich eine RTF-Datei mit sowas für den MS Help Compiler.

user profile iconsibbe hat folgendes geschrieben:
Edit: Vielleicht doch nicht so einfach, hab mir grade mal ne RTF-Datei in Notepad angeguckt... Das sieht ja eklig aus...

;)

Damit mich BTW keiner falsch versteht: ich will nix am TRichEdit ändern. Am Ende soll das dann so sein, dass ich eine Datei haben will, wo die Inhalte vieler TRichEdit-s durch Zeilenumbrüche getrennt und mit Fußnoten innerhalb jedes Abschnitts versehen werden, drin sind.
Das, was der MS HCW eben so brauch ;)

user profile iconalias5000 hat folgendes geschrieben:
Du müsstest dann eine eigene TConversion schreiben.

Das kann ja heiter werden :roll:
Wozu eigentlich eine TConversion? Was macht sowas denn? ;-) hab ich noch nie benutzt. :lol:

user profile iconalias5000 hat folgendes geschrieben:
aber schau dir auf der einen Seite mal die JVCL an, die hat ein paar eigene drin

Ich schau mal, aber von RichText war da glaub ich nicht so viel... :(
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: So 21.08.05 22:15 
user profile iconJayK hat folgendes geschrieben:
Am Ende soll das dann so sein, dass ich eine Datei haben will, wo die Inhalte vieler TRichEdit-s durch Zeilenumbrüche getrennt und mit Fußnoten innerhalb jedes Abschnitts versehen werden, drin sind.
Das, was der MS HCW eben so brauch ;)


Nur mit Fußnoten ist es leider nicht getan,
\footnote (# $ K)
denn du brauchst ja auch u.a.
\ul >>> unterstrichen >>> PopUp-Link
\uldb >>> doppelt unterstrichen >>> Jump-Link
\v >>> verborgen >>> Topic Identifier
\keep >>> Zeilenumbruch verhindern
\keepn >>> non-scrolling - Bereich
....
innerhalb der Inhalte der RichEdit-s, also innerhalb der Texte.

Nehme an das Du die einzelnen Hilfe-Themen in einem Richedit bearbeiten willst,
das geht aber nur so weit es sich um einfache Formatierungen(fett, kursiv ...) handelt,
bei z.B. \uldb oder \v muss das RichEdit passen.

Die fehlenden bzw. nicht möglichen Textformatierungen wirst Du Dir an anderer Stelle merken müssen
und kannst sie dann vor der Speicherung als RTF-Datei
entweder in den ausgelesenen Plaintext der Richedits einbauen,
oder unter zuhilfenahme von SelAttributes zusammenführen.

noch ein Tipp:
Du kannst für jedes Hilfethema(Richedit-Inhalt) eine Datei speichern und diese dann in der *.hpj unter [FILES] an den HCW-Compiler übergeben, dann ist das ganze einfacher zu warten.

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
JayK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1013



BeitragVerfasst: Do 25.08.05 15:50 
user profile iconLannes hat folgendes geschrieben:
Nur mit Fußnoten ist es leider nicht getan,
\footnote (# $ K)
denn du brauchst ja auch u.a.
\ul >>> unterstrichen >>> PopUp-Link
\uldb >>> doppelt unterstrichen >>> Jump-Link
\v >>> verborgen >>> Topic Identifier
\keep >>> Zeilenumbruch verhindern
\keepn >>> non-scrolling - Bereich
....
innerhalb der Inhalte der RichEdit-s, also innerhalb der Texte.

Das ist mir schon klar, aber ich wollte nicht gleich alles auf einmal "fordern" ;-)

user profile iconLannes hat folgendes geschrieben:
Nehme an das Du die einzelnen Hilfe-Themen in einem Richedit bearbeiten willst,
das geht aber nur so weit es sich um einfache Formatierungen(fett, kursiv ...) handelt,
bei z.B. \uldb oder \v muss das RichEdit passen.

Ist mir auch schon aufgefallen. Muss ich das was darunter bei dir steht machen :lol:

user profile iconLannes hat folgendes geschrieben:
Die fehlenden bzw. nicht möglichen Textformatierungen wirst Du Dir an anderer Stelle merken müssen
und kannst sie dann vor der Speicherung als RTF-Datei
entweder in den ausgelesenen Plaintext der Richedits einbauen,
oder unter zuhilfenahme von SelAttributes zusammenführen.

Aber das RichEdit unterstützt doppelte Unterstrichungen zB doch nicht. was soll ich dann mit SelAttributes? Ist das da etwa dann trotzdem drin?

user profile iconLannes hat folgendes geschrieben:
noch ein Tipp:
Du kannst für jedes Hilfethema(Richedit-Inhalt) eine Datei speichern und diese dann in der *.hpj unter [FILES] an den HCW-Compiler übergeben, dann ist das ganze einfacher zu warten.

:idea: Stimmt. Hatte ich nicht dran gedacht :gruebel: dann brauch ich halt kein \page aber der Rest Problem bleibt bestehen :(
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Do 25.08.05 17:01 
Hallo,
user profile iconJayK hat folgendes geschrieben:
user profile iconLannes hat folgendes geschrieben:
...das geht aber nur so weit es sich um einfache Formatierungen(fett, kursiv ...) handelt,
bei z.B. \uldb oder \v muss das RichEdit passen.

Ist mir auch schon aufgefallen. Muss ich das was darunter bei dir steht machen :lol:
user profile iconLannes hat folgendes geschrieben:
Die fehlenden bzw. nicht möglichen Textformatierungen wirst Du Dir an anderer Stelle merken müssen
und kannst sie dann vor der Speicherung als RTF-Datei
entweder in den ausgelesenen Plaintext der Richedits einbauen,
oder unter zuhilfenahme von SelAttributes zusammenführen.

Aber das RichEdit unterstützt doppelte Unterstrichungen zB doch nicht. was soll ich dann mit SelAttributes? Ist das da etwa dann trotzdem drin?

:arrow: SelAttributes, damit Du Dir nicht alle Formatierungen an anderer Stelle merken musst, denn z.B. Farben, Fett kann das RichEdit für dich verwalten.

Im Grunde hast Du zwei Möglichkeiten:
1.
>> Texte verfassen, formatieren mit den Möglichkeiten der RichEdit
>> Die speziellen(\uldb usw.) Formatierungen merken(String,Position und Format)
>> PlainText(Rtf-Code) auslesen, gemerkte Formatierungen darin einbauen

2.
>> wie vor
>> wie vor
>> RTF-Code komplett selbst erstellen
>>>> Text aus dem RichEdit auslesen
>>>> im Richedit enthaltene Formatierungen mit Hilfe von SelAttributes
>>>> gemerkte spezielle Formatierungen einsetzen

Ich glaube mit der zweiten Möglichkeit kommst Du schneller zum Ziel.

Der größte Aufwand wohl die Zwischenspeicherung der speziellen Formatierungen sein.
Ein Ansatz wäre da sich nur die Strings zu merken, die einen PopUp-Link
oder Jump-Link darstellen sollen. Diese Strings kannst Du dann bei der Erstellung des RTF-Codes wiedersuchen und codieren. So nebenbei kannst Du sie dann nochmal als KeyWords für die WinHelpRegisterkarte „Suchen“ einbauen.

Wenn Du das fertig hast würde mich der Sourcecode interessieren :wink:

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
JayK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1013



BeitragVerfasst: Fr 26.08.05 17:39 
user profile iconLannes hat folgendes geschrieben:
>> PlainText(Rtf-Code) auslesen, gemerkte Formatierungen darin einbauen

Hab ich mir schon gedacht. Habe ich oben vergessen hinzuschreiben, dass ich gerne Quellcodes für Denkanstöße haben möchte :mrgreen: Nee, nee jetzt mal ernst: bis jetzt hab ich noch nie was manuell ausgelesen, deshalb bitte ich um einige Quellcodebeispiele.

user profile iconLannes hat folgendes geschrieben:
>> RTF-Code komplett selbst erstellen

Ouuuuu! Das gefällt mir eigentlich überhaupt nicht :( Ich kenne auch nur einen Bruchteil von dem ganzen Krimskrams, der da im RichText rumwurschtelt und ohne den es dann doch nicht geht :P wenn ich das selbst schreiben würde, würde es entweder nicht funktionieren :lol: oder ich bräuchte erstemal ¼ Jahr, um mir RTF vollständig zu erarbeiten :(

user profile iconLannes hat folgendes geschrieben:
Ich glaube mit der zweiten Möglichkeit kommst Du schneller zum Ziel.

Das ist schlecht :( (siehe oben)

user profile iconLannes hat folgendes geschrieben:
Der größte Aufwand wohl die Zwischenspeicherung der speziellen Formatierungen sein.
Ein Ansatz wäre da sich nur die Strings zu merken, die einen PopUp-Link
oder Jump-Link darstellen sollen. Diese Strings kannst Du dann bei der Erstellung des RTF-Codes wiedersuchen und codieren. So nebenbei kannst Du sie dann nochmal als KeyWords für die WinHelpRegisterkarte „Suchen“ einbauen.

Suchen? weiß jetzt nicht wie man die so einbaut... ist ja auch nicht soo wichtig fürs erste ;-)

user profile iconLannes hat folgendes geschrieben:
Wenn Du das fertig hast würde mich der Sourcecode interessieren :wink:

Kann ich mir vorstellen :lol: ;-)
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Fr 26.08.05 21:09 
user profile iconJayK hat folgendes geschrieben:
user profile iconLannes hat folgendes geschrieben:
>> PlainText(Rtf-Code) auslesen, gemerkte Formatierungen darin einbauen

Hab ich mir schon gedacht. Habe ich oben vergessen hinzuschreiben, dass ich gerne Quellcodes für Denkanstöße haben möchte :mrgreen: Nee, nee jetzt mal ernst: bis jetzt hab ich noch nie was manuell ausgelesen, deshalb bitte ich um einige Quellcodebeispiele.
Such mal nach Suche in: Delphi-Forum, Delphi-Library RTF KONVERTIEREN oder da Suche in der Delphi-PRAXiS RTF KONVERTIEREN und in der RTF-Spezifikation von Microsoft ist ein Beispiel-Reader in C-Code enthalten.

user profile iconJayK hat folgendes geschrieben:

user profile iconLannes hat folgendes geschrieben:
>> RTF-Code komplett selbst erstellen

Ouuuuu! Das gefällt mir eigentlich überhaupt nicht :( Ich kenne auch nur einen Bruchteil von dem ganzen Krimskrams, der da im RichText rumwurschtelt und ohne den es dann doch nicht geht :P wenn ich das selbst schreiben würde, würde es entweder nicht funktionieren :lol: oder ich bräuchte erstemal ¼ Jahr, um mir RTF vollständig zu erarbeiten :( ...
...Das ist schlecht :(
Warum ist das schlecht, beim Auslesen musst Du alles kennen, setzt Du es selbst zusammen, brauchst Du nur das zu kennen was unbedingt benötig wird.
In dem Beitrag ist ein Beispiel : Formatierten Text an Richedit übergeben?

user profile iconJayK hat folgendes geschrieben:

Suchen? weiß jetzt nicht wie man die so einbaut... ist ja auch nicht soo wichtig fürs erste ;-)
Was ist Dir denn wichtig?, welche Anforderungen stellst Du an deine Anwendung?

...mich der Sourcecode interessieren :wink: :arrow: immer noch :wink:

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
JayK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1013



BeitragVerfasst: Mo 14.11.05 18:27 
Hab vor ner Woche die RTF-Doku vom HCW gefunden :D
werde das RTF-File dann wohl manuell machen ;)
Lannes
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2352
Erhaltene Danke: 4

Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
BeitragVerfasst: Mo 14.11.05 19:00 
Hallo,

na dann viel Spaß :mrgreen:

Ich glaube das Dir das dabei helfen könnte:
Dekompilieren einer WinHelp Datei
Dann kannst Du in den Ergebnisdateien sehen wie bestimmte Funktionen in Hilfe-Dateien konstruiert sind, und welche RTF-Codes in Winhelp genutzt werden.

_________________
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
JayK Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1013



BeitragVerfasst: Mo 14.11.05 19:13 
In der HCW Hilfe befasst sich das letzte (oder vorletzte :gruebel:) Kapitel ausschließlich mit dem Aufbau von RTF und den Funktionen, die von WinHelp dabei benutzt werden, da brauch ich nix decompilieren. ;) Trotzdem Danke :)