Compiler klemmt nach der Deklaration einer Konstanten

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
heiße Luft
Beiträge: 45
Registriert: 21.04.2009 12:04
Computerausstattung: Ausreichend. 3 Pc, 1 Laptop
BS: Win 7 (zum spielen),XP (weils noch da ist), Win 2000(laptop) und Linux (Umbuntu und Mint)
Wohnort: NRW

Compiler klemmt nach der Deklaration einer Konstanten

Beitrag von heiße Luft »

Hallo Leute,

nach der Konvertierung einer C lib "PviCom.h" mit dem "Header Converter" aus der Libaray SDK habe ich ein Problem bei der Deklaration einer Konstanten.
Original C lib

Code: Alles auswählen

#define PVICHR_PARAM '"'
Original Entsprechung aus einer include für MS-VB

Code: Alles auswählen

Public Const PVICHR_PARAM = """"
Nach Konvertierung durch den Header Converter für PB:

Code: Alles auswählen

#PVICHR_PARAM = """"
Der Compiler gibt mir hier die Meldung aus:

Code: Alles auswählen

Garbage to the end of line
Wenn ich die inneren Anführungszeichen weglasse läuft der Compiler durch.
Woran kann es liegen?
bzw: Wie bekomme ich zwei Anfürungszeichen als String?

Gibt es irgendwo einen Text der mir die Fehlermeldungen des Compilers ein wenig erläutert?

viele Grüße hL
(ich weiß Newbies können nervig sein. Deshalb seid bedankt für eure Geduld, auch wenn man mal etwas nicht gleich beim ersten Mal kapiert)
Benutzeravatar
D@nte
Beiträge: 324
Registriert: 24.04.2007 15:33
Wohnort: Berlin

Beitrag von D@nte »

Bei der Meldung gibt's eigtl nix zu erläutern, da steht schon genau was das Problem is "Müll am Ende der Zeile"
Ein String geht IMMER von " bis " sprich nur #Konstante = "" ist eine zulässig zuweisung alles was danach kommt ist 'Müll'.

Wenn ich dein Vorhaben richtig verstanden habe gibt's jetzt min 3 Möglichkeiten das zu lösen:

1.)

Code: Alles auswählen

#PVICHR_PARAM = Chr(34) + Chr(34)
2.)

Code: Alles auswählen

#PVICHR_PARAM = #DQOUTE$ + #DQOUTE$
3.)
überall wo #PVICHR_PARAM auftaucht durch #DQOUTE$ + #DQOUTE$ ersetzen

Aber mal so am Rande bist du dir sicher das #PVICHR_PARAM äquivalent zu "" sein soll und nicht eher äquivalent zu " ?!
Sollte #PVICHR_PARAM nämlich nur " darstellen einfach

Code: Alles auswählen

#PVICHR_PARAM = Chr(34)
oder

Code: Alles auswählen

#PVICHR_PARAM = #DQOUTE$
verwenden
Little John

Re: Compiler klemmt nach der Deklaration einer Konstanten

Beitrag von Little John »

heiße Luft hat geschrieben:Wie bekomme ich zwei Anfürungszeichen als String?

Code: Alles auswählen

#PVICHR_PARAM = #DQUOTE$ + #DQUOTE$
heiße Luft hat geschrieben:(ich weiß Newbies können nervig sein. Deshalb seid bedankt für eure Geduld, auch wenn man mal etwas nicht gleich beim ersten Mal kapiert)
"Nervig" möchte ich von meiner Seite nicht sagen. Allerdings wäre es manchmal schon schön, wenn Fragen mehr "auf ihren Kern konzentriert" wären. :-)
Und auch aussagekräftige Threadtitel sind wünschenswert. "Compiler klemmt" hört sich für mich so an, als wenn er sich aufgehängt hat.

//edit: D@nte war schneller ...

Gruß, Little John
Benutzeravatar
heiße Luft
Beiträge: 45
Registriert: 21.04.2009 12:04
Computerausstattung: Ausreichend. 3 Pc, 1 Laptop
BS: Win 7 (zum spielen),XP (weils noch da ist), Win 2000(laptop) und Linux (Umbuntu und Mint)
Wohnort: NRW

Beitrag von heiße Luft »

D@nte hat geschrieben: Aber mal so am Rande bist du dir sicher das #PVICHR_PARAM äquivalent zu "" sein soll und nicht eher äquivalent zu " ?!
Nein, sicher bin ich mir über überhaupt nichts. Tatsache ist das ich zwei Dateien geliefert bekommen habe. Eine für MS-VB und eine lib für MS-VC. Die Konstanten sind in den Dateien wie oben gezeigt deklariert.
Also für VC nur “
für VB ““
und der Header Converter macht aus ´ “` ja auch ““““ wie in der VB Version.
Ich lasse die Konstante erst mal ausgeklammert. Ob ich sie überhaupt brauche weiß ich eh noch nicht. Wenn ich sie brauche muß ich wohl ausprobieren ob #DQOUTE$ + #DQOUTE$ oder nur #DQOUTE$

Danke für die Antwort
hL
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> und der Header Converter macht aus ´ “` ja auch ““““ wie in der VB Version.

das ist ebenso merkwürdig wie falsch.

Code: Alles auswählen

#define PVICHR_PARAM '"'
im c-source ist ganz eindeutig

Code: Alles auswählen

#PVICHR_PARAM = Chr(34)
eventuell macht er für VB ein """" daraus, weil man zum escapen eines quote ein zweifaches quote schreiben muss.

in PB ist das nicht möglich, da werden keine escapes unterstützt.

also mittels der Chr() funktion den ASCII code übergeben.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Den C Code kann man doch ganz leicht uebersetzen, oder hab ich was falsch verstanden? Ist aber ein Char und kein String.

Code: Alles auswählen

#PVICHR_PARAM = '"'
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

> Ist aber ein Char und kein String.
sicher?
bzw... wo ist der Unterschied?

echte strings gibts in C sowieso nicht, das sind immer CharArrays, noch nicht mal immer nullterminiert...

die Frage wäre also, wie wird die Konstante im weiteren Code verwendet.

wenn sie als numerische CHAR verwendet wird, hast du natürlich recht, dann kann man es einfach als

Code: Alles auswählen

#PVICHR_PARAM = '"' 
oder auch als

Code: Alles auswählen

#PVICHR_PARAM = 34 
definieren.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten