Definition von String (C zu PB)

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Benutzeravatar
Kukulkan
Beiträge: 1066
Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Kontaktdaten:

Definition von String (C zu PB)

Beitrag 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
Benutzeravatar
Kukulkan
Beiträge: 1066
Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Kontaktdaten:

Beitrag 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
Benutzeravatar
Sylvia
verheiratet<br>1. PureGolf-Gewinner
Beiträge: 487
Registriert: 29.08.2004 09:42
Wohnort: Old Europe

Beitrag von Sylvia »

>>Dennoch danke für's lesen.

Bitte :D
Basic Pur = PureBasic
Benutzeravatar
Zaphod
Beiträge: 2875
Registriert: 29.08.2004 00:40

Beitrag 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 "\".
Benutzeravatar
Kukulkan
Beiträge: 1066
Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Kontaktdaten:

Beitrag 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
MARTIN
Beiträge: 454
Registriert: 08.09.2004 14:03
Wohnort: Kiel

Beitrag 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.
Zuletzt geändert von MARTIN am 16.10.2004 12:00, insgesamt 1-mal geändert.
Amilo 1667|Suse Linux 10.1_64bit/WinXP |PB 4.00/3.94
Benutzeravatar
Kukulkan
Beiträge: 1066
Registriert: 09.09.2004 07:07
Wohnort: Süddeutschland
Kontaktdaten:

Beitrag 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
Antworten