Only a literal string can be put after IncludeBinary

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Eckhard.S
Beiträge: 136
Registriert: 22.07.2006 17:19
Wohnort: Meschede/Sauerland

Only a literal string can be put after IncludeBinary

Beitrag von Eckhard.S »

Code: Alles auswählen


Global sprachversion.s="de"                            ; de = Deutsch, nl = Niederlande usw... 
       hilfetxt.s = "./"+sprachversion.s+"-hilfe.txt"

IncludeBinary hilfetxt.s  
Ergibt "Only a literal string can be put after IncludeBinary". Wie lässt sich machen?
Viele Grüße aus dem Sauerland
Eckhard

PureBasic 4.0 Vollversion, WinXP
Make a better world :D
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Wozu brauchst du Variablen hinter IncludeBinary? Du kannst doch nicht
während dem Programmverlauf die Variable ändern und mal schnell eine
anderen Datei includieren. Das geht also nur mit Konstanten.

Code: Alles auswählen

#sprachversion = "de"                            ; de = Deutsch, nl = Niederlande usw...
#hilfetxt = "./" + #sprachversion + "-hilfe.txt"

IncludeBinary #hilfetxt
Willst du allerdings, dass man in einem Programm die Sprache umstellen
kann, dann würde ich entweder gleich auf IncludeBinary verzichten und die
entsprechenden Sprachdateien mit ReadFile() oder ähnlichem Einlesen oder
gleich alle Sprachdateien includieren und immer die entsprechende Auslesen.
Benutzeravatar
Eckhard.S
Beiträge: 136
Registriert: 22.07.2006 17:19
Wohnort: Meschede/Sauerland

Beitrag von Eckhard.S »

Ja, danke! Das war's! :allright:

Das Übersetzungs-Programm soll später in vielen Sprachen verfügbar werden, die alle seperat kompiliert werden, d.h. es gibt ein de-programm.exe, ein nl-programm.exe (Deutsch und Niederländisch) usw.

Damit ich es nicht überall umstellen muss, brauche ich die Kontante.

Jetzt weiß ich auch, wofür man eine Konstante benutzt. Ich dachte immer, dac kann man doch auch mit einer Variablen machen, die man einfach nicht mehr ändert 8)
Viele Grüße aus dem Sauerland
Eckhard

PureBasic 4.0 Vollversion, WinXP
Make a better world :D
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

kennste Macros ? Damit könnte das auch gehen
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Eckhard.S
Beiträge: 136
Registriert: 22.07.2006 17:19
Wohnort: Meschede/Sauerland

Beitrag von Eckhard.S »

Macros kenne ich noch nicht.

Bisher mache ich es so:

de-menue.txt hat den Inhalt

Code: Alles auswählen

aussprache$    = "Aussprache"
deutsch$       = "Deutsch" 
zweisprachig$  = "Zweisprachig"
datei$         = "Datei"
  neu$         = "Neu"
  oeffnen$     = "Öffnen"
  speichern$   = "Speichern"
  beenden$     = "Beenden"
...
eo-menue.txt (Esperanto hat den Inhalt

Code: Alles auswählen

aussprache$    = "Prononco"
deutsch$       = "Germana Lingvo" 
zweisprachig$  = "Dulingva"
datei$         = "Dosiero"
  neu$         = "Nova"
  oeffnen$     = "Malfermi"
  speichern$   = "Surdiskigi"
  beenden$     = "Fini"
Je nach Sprachversion lade ich mir die Sprache herein, die ich benötige. Es könnten noch weitere Sprachen hinzukommen, aber immer nur eine Sprachdatei wird benötigt (also bisher kein Umschalten). Falls es eine geschicktere Lösung gibt, bin ich gerne dafür zu haben.
Viele Grüße aus dem Sauerland
Eckhard

PureBasic 4.0 Vollversion, WinXP
Make a better world :D
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8807
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Die geschicktere Variante wäre folgende:

Alle Texte durchnummerieren:
max = 8
1 = "Aussprache"
2 = "Deutsch"
3 = "Zweisprachig"
4 = "Datei"
5 = "Neu"
6 = "Öffnen"
7 = "Speichern"
8 = "Beenden"
So legst du für jede Sprache deine Textdatei an und liest die Texte dann in
ein Array:

Code: Alles auswählen

Global Dim Language.s(0)
Procedure ReadLanguage(File.s)
  Protected FileID.l, max.l, a.l
  
  If OpenPreferences(File)
    max = ReadPreferenceLong("max", 0)
    Redim Language.s(max)
    For a = 1 To max
      Language(a) = ReadPreferenceString(Str(a), "")
    Next
    ClosePreferences()
  EndIf
EndProcedure

ReadLanguage("Deutsch.txt")
Jetzt musst du nur noch das Array mit dem entsprechenden Index
benutzen und überall da einfügen, wo du die Texte brauchst.
Antworten