| Autor |
Beitrag |
LonghornUser
      
Beiträge: 796
|
Verfasst: So 07.11.04 00:43
HINWEIS: Ich weiß, ich habe diesen Thread schonmal gepostet im Unter-Forum "Dateizugriff", aber da gehen wesentlich weniger User rein, also habe ich es nochmal hier herein gepostet. An die Mods: Der Thread in Dateizugriff kann gelöscht werden
Hallo.
Ich habe ein Problem beim Erstellen eines Stringtables.
Ich hab die Anleitung von www.del-net.com/frmDelphiMultiLan.html benutzt und eine Textdatei so erstellt und als "LanFile.rc" abgespeichert. Aber der Compiler sagt:
| Zitat: |
[Fehler] RLINK32: Unsupported 16bit resource in file "C:\Dokumente und Einstellungen\User\Desktop\Progg\Lang.rc"
|
Was tun ?
Auch das umwandeln per brcc32.exe in ne RES-Datei geht nicht.
Hoffe auf schnelle Antworten.
|
|
hibbert
      
Beiträge: 1007
WinServer2003, Win XP, Linux
D6 Pers, D05
|
Verfasst: So 07.11.04 01:17
Wenn ich ein mehrsprachiges Programm mache, dann mache ich das mit .ini - Dateien, doch dann musst du beim laden des Programmes eine recht lange procedure schreiben, in der du jedem einzelnem Objekt die Eigenschaft aus der .ini zuweist.
zb:
Delphi-Quelltext 1: 2: 3: 4:
| Button1.caption:=ini.readstrinf('Buttons','1',''); Button2.caption:=ini.readstrinf('Buttons','2',''); Button3.caption:=ini.readstrinf('Buttons','3',''); |
ich denke, dass dir das nicht bei deinem Problem hilft, aber sicherlich eine alternative ist.
_________________ I kunnen väl svara endast ja eller nej
Om i viljen eller nej
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 07.11.04 09:22
| LonghornUser hat folgendes geschrieben: | Aber der Compiler sagt:
| Zitat: |
[Fehler] RLINK32: Unsupported 16bit resource in file "C:\Dokumente und Einstellungen\User\Desktop\Progg\Lang.rc"
|
Was tun ? |
Umwandeln in eine RES-Datei.
| Zitat: | | Auch das umwandeln per brcc32.exe in ne RES-Datei geht nicht. |
Kannst du das begründen? Wenn ich das Beispiel von der von dir genannten Seite nehme:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9:
| STRINGTABLE BEGIN 1, "Sprachwandler" 2, "Deutsch" 3, "Englisch" 1001, "LanguageChanger" 1002, "German" 1003, "English" END |
als "test.rc" speichere und dann schlicht und einfach
Quelltext
eingebe, dann erhalte ich auch die "test.res", die sich ebenso problemlos in das Programm einbinden lässt.
btw: Wenn du den Weg von der genannten Seite wählst, dann wäre es vllt. besser, für jede Sprache eine eigene Ressourcendatei anzulegen.
|
|
LonghornUser 
      
Beiträge: 796
|
Verfasst: So 07.11.04 09:24
Jo, danke erstmal. Bis jetzt habe ich es mit normalen Txtdateien gemacht. geht ja auch. Aber ich habe mehrere EXEn und für die zweite EXE stehen die strings am ende der 300 zeilen-Datei und da muss ich jetz readln(afile,Zeile); ca. 280 mal hinschreiben. und das ist nich so das wahre. Und mit den INIs ist es wohl fast dasselbe, denke ich mal.
In dem artikel von dem link stand eine zuweisung per nummer und das wäre echt super. Hat denn nieman mit solch einem Table je gearbeitet (von de Mods) ??
Oder gibts noch ne andere Möglichkeit mit einer solchen Nummernzuweisung ??
|
|
LonghornUser 
      
Beiträge: 796
|
Verfasst: So 07.11.04 09:32
Ohhhh  Habe den Fehler entdeckt  Hatte statt 1,2,3 der übersicht halber 001, 002, 003 genommen. jetz gehts. danke für die anregung !!!!
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 07.11.04 09:32
Ich verstehe nur Bahnhof. Es erklärt sich doch mehr oder weniger durch die Seite.
Was denn für Nummern? Redest du von den IDs der Strings? Dann schau sie dir doch mal richtig an. Es sind immer die gleichen. Für die englischen Texte wurde einfach nur die 1000 dazu addiert. Und nun schau dir das an:
| Zitat: | Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| const GERMAN = 0; ENGLISH = 1000; function GetStringFromRessource(ID, Offset: Integer): string; var p: PChar; begin
p := StrAlloc(256); try if LoadString(hInstance, ID + Offset, p, 255) <> 0 then Result := p else Result := ''; finally StrDispose(p); end; end; | |
Und probier´s aus:
Delphi-Quelltext 1: 2:
| ShowMessage(GetStringFromRessource(1,GERMAN)); ShowMessage(GetStringFromRessource(1,ENGLISH)); |
dann weißt du auch, wie das mit der "Nummernzuweisung" funktioniert.
|
|
LonghornUser 
      
Beiträge: 796
|
Verfasst: So 07.11.04 09:45
Nochmal  Das Problem war einfach nur, dass ich bei den IDs die falschen Zahlen genommen hatte. Beispiel:
Ich hatte
Quelltext 1: 2: 3: 4: 5: 6: 7:
| STRINGTABLE BEGIN 001, "Hallo" 002, "Beispiel" [...] 287, "Nochwas" END |
statt
Quelltext 1: 2: 3: 4: 5: 6: 7:
| STRINGTABLE BEGIN 1, "Hallo" 2, "Beispiel" [...] 287, "Nochwas" END |
genommen und das verursachte, dass es net ging  Das war nur wegen der Übersicht. Aber egal nun gehts ohne Probleme und macht mein Programm sicherlich um einige KBs leichter. Danke !!
|
|
|