| Autor |
Beitrag |
JayK
      
Beiträge: 1013
|
Verfasst: 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)  )?
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
      
Beiträge: 50
WIN XP Prof
D7 Prof
|
Verfasst: 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
      
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)
|
Verfasst: 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 
      
Beiträge: 1013
|
Verfasst: So 21.08.05 18:49
sibbe 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)
sibbe 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  , aber Word und OOo werdens bringen.
Außerdem brauch ich eine RTF-Datei mit sowas für den MS Help Compiler.
sibbe 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
alias5000 hat folgendes geschrieben: | | Du müsstest dann eine eigene TConversion schreiben. |
Das kann ja heiter werden
Wozu eigentlich eine TConversion? Was macht sowas denn?  hab ich noch nie benutzt.
alias5000 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
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: So 21.08.05 22:15
JayK 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 
      
Beiträge: 1013
|
Verfasst: Do 25.08.05 15:50
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Do 25.08.05 17:01
Hallo,
JayK hat folgendes geschrieben: | Lannes 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
Lannes 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?
|
 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 
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
JayK 
      
Beiträge: 1013
|
Verfasst: Fr 26.08.05 17:39
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Fr 26.08.05 21:09
JayK hat folgendes geschrieben: | Lannes 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 Nee, nee jetzt mal ernst: bis jetzt hab ich noch nie was manuell ausgelesen, deshalb bitte ich um einige Quellcodebeispiele. |
Such mal nach RTF KONVERTIEREN oder da RTF KONVERTIEREN und in der RTF-Spezifikation von Microsoft ist ein Beispiel-Reader in C-Code enthalten.
JayK hat folgendes geschrieben: |
Lannes 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 wenn ich das selbst schreiben würde, würde es entweder nicht funktionieren 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?
JayK 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  immer noch 
_________________ MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
|
|
JayK 
      
Beiträge: 1013
|
Verfasst: Mo 14.11.05 18:27
Hab vor ner Woche die RTF-Doku vom HCW gefunden
werde das RTF-File dann wohl manuell machen 
|
|
Lannes
      
Beiträge: 2352
Erhaltene Danke: 4
Win XP, 95, 3.11, IE6
D3 Prof, D4 Standard, D2005 PE, TurboDelphi, Lazarus, D2010
|
Verfasst: Mo 14.11.05 19:00
Hallo,
na dann viel Spaß
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 
      
Beiträge: 1013
|
Verfasst: Mo 14.11.05 19:13
In der HCW Hilfe befasst sich das letzte (oder vorletzte  ) Kapitel ausschließlich mit dem Aufbau von RTF und den Funktionen, die von WinHelp dabei benutzt werden, da brauch ich nix decompilieren.  Trotzdem Danke 
|
|
|