Seite 1 von 1

Definition von String (C zu PB)

Verfasst: 15.10.2004 13:06
von Kukulkan
Hallo,

Ich bin am übersetzen einer Routine von C nach PB.

Ich muss jetzt folgenden String aus C in PB haben (alles in einer Zeile):

Code: Alles auswählen

#define RTF_PREBUF {\\rtf1\\ansi\\mac\\deff0\\deftab720{\\fonttbl;}{\\f0\\fnil \\froman \\fswiss \\fmodern \\fscript \\fdecor MS Sans SerifSymbolArialTimes New RomanCourier{\\colortbl\\red0\\green0\\blue0\n\r\\par \\pard\\plain\\f0\\fs20\\b\\i\\u\\tab\\tx
Problematisch ist dabei, dass die \\ ein \ sein sollen. Ich habe auch \n zu Linefeed (ASCII 10) und \r zu Return (ASCII 13) gewandelt.

Ich muss aber noch Codes vergessen haben oder schlicht nicht kennen denn es funktioniert noch nicht richtig.

Also, was steht im Speicher, wenn ein String so in C definiert wurde?

Evtl. kann jemand mit C-Compiler diesen String einbauen und als Hexdump anzeigen? Damit wäre mir schon geholfen.

Grüsse,

Volker

Verfasst: 15.10.2004 13:16
von Kukulkan
Hallo,

Ich habe gerade eine Programm gefunden das den selben String enthält. Dort habe ich dann mit dem Hexeditor geguckt wie der abgelegt ist und stelle fest, dass wirklich nur \n und \r ersetzt wurden. Also hab ich wohl nichts vergessen und es ist woanderst der Fehler. Mist.

Dennoch danke für's lesen.

Grüsse,

Volker

Verfasst: 15.10.2004 15:08
von Sylvia
>>Dennoch danke für's lesen.

Bitte :D

Verfasst: 16.10.2004 03:24
von Zaphod
was mir da ins auge springt ist, nicht alle geschweiften klammern werden geschloßen. bist du sicher dass das der ganze string ist?

das mit den "\\" sollte kein problem sein. das pb äquivalent dazu ist einfach nur "\".

Verfasst: 16.10.2004 08:59
von Kukulkan
Hallo Zaphod,

Danke für den Hinweis, aber es ist schon richtig so. Es ist ein Header für RTF-Strings. Dieser wird zur Kompression verwendet (LZ-ähnlicher Algorithmus) wobei der Inhalt nur als vorgefertigter Vorlagenstring dient. Er muss nicht geschlossen sein.

Ich habe das Problem inzwischen gelöst. Vielen Dank.

Volker

Verfasst: 16.10.2004 09:29
von MARTIN
Ich versteche da auch was nicht.
Hier wird ein Makro definiert, das heißt jedes mal wenn im Quellencode RTF_PREBUF vorkommt wird es durch den String ersetzt, außer dass RTF_PREBUF in Anführungszeichen steht - "RTF_PREBUF". So aber verursacht es immer syntaxfehler, man müsste den String in Anführungszeichen setzten:

Code: Alles auswählen

#define RTF_PREBUF "{\\rtf1\\ansi\\mac\\deff0\\deftab720{\\fonttbl;}{\\f0\\fnil \\froman \\fswiss \\fmodern \\fscript \\fdecor MS Sans SerifSymbolArialTimes New RomanCourier{\\colortbl\\red0\\green0\\blue0\n\r\\par \\pard\\plain\\f0\\fs20\\b\\i\\u\\tab\\tx"
Mir fällt nicht ein wie man das sonst kompielieren kann.

Verfasst: 16.10.2004 11:25
von Kukulkan
Hallo Martin,

Du hast Recht. Beim Kopieren hat sich da wohl ein Fehler eingeschlichen. Das muss natürlich in Anführungszeichen stehen wie in deinem Beispiel.

Volker