Forum | | | | - page 1 - |
| Stephan Sonneborn | Salut, dans qui LEER32.DLL habe je testweise avec dem ResourceBuilder deux Cordes eingefügt:
einmal dans qui Discours allemande $0407 bzw. 1031:
et einmal dans qui Discours Englisch $0809 bzw. 2057:
qui DLL habe je sur USEDLL eingebunden. Den Text weise je so trop:
DE_Text$ = RES("GetStrings", PRGDLL&, 100, $00407)
EN_Text$ = RES("GetStrings", PRGDLL&, 100, $00809)
mais je bekomme qui Fehlermeldung "String-Ressource pas trouvé: #100".
quoi ist faux? |
| | | XProfan X4Schöne Grüße aus Wittgenstein von Stephan Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 28.09.2020 ▲ |
| |
| | | | | - page 1 - |
| Georg Teles | Mir fällt sur, dass
PRGName$ = RES("GetStrings", PRGDLL&, "#100", $00407)
un Array zurückgibt, mais je bekomme es aussi pas hin, es auszulesen
So funktioniert es, mais je comprends pas pourquoi
Déclarer PRGNameN$[]'-------------------------------------#
PRGNameN$[] = RES("GetStrings", PRGDLL&, "#7", $00407)'--#
PRGName$ = PRGNameN$[4]'---------------------------------#
ganzer Code
'*******************************************************************************************************'
'* Programme: Vokabeltrainer *'
''******************************************************************************************************'
'* Version: V0.01 *'
'* Stand: 28.09.2020 *'
'* Info: Vokabeltrainer *'
'*******************************************************************************************************'
'*******************************************************************************************************'
'* Klassendefinition *'
'*******************************************************************************************************'
CLASS Vokabel = mot$(21), \
Uebersetzung$(21), \
Genus$(2), \
Casus$(13), \
Numerus$(11), \
verbe1$(21), \
verbe22$(21), \
verbe3$(21), \
Lektion$(13)', \
' Anlegen&, \
' Importieren@, \
' Exportieren@, \
' Vorlesen@
'*******************************************************************************************************'
'*******************************************************************************************************'
'* Variablendeklaration *'
'*******************************************************************************************************'
'*- Programme -*'
DECLARE PRGDLL&
DECLARE PrgName$
DECLARE x!, xx!, y!, yy!
'*******************************************************************************************************'
'*- Dialog -*'
DECLARE DlgText&[5,30], DlgText$[5,30]
DECLARE DlgEdit&[5,30]
DECLARE ToolBar&, ToolbarIcons& , TabControl&[5]
'*******************************************************************************************************'
'*- Vobaln -*'
DECLARE Begriff#
DECLARE String Textes[]
'*******************************************************************************************************'
'*******************************************************************************************************'
'* Variablendimensionierung *'
'*******************************************************************************************************'
DIM Begriff#, Vokabel
'*******************************************************************************************************'
'*******************************************************************************************************'
'* Wertzuweisungen *'
'*******************************************************************************************************'
PRGDLL& = USEDLL("Vokabeln_32.DLL")
'PRGName$ = RES("GetStrings", PRGDLL&, "#100", $00407)
'PRGName$ = EXTSTRING$(PRGDLL&, 100)
Déclarer PRGNameN$[]'-------------------------------------#
PRGNameN$[] = RES("GetStrings", PRGDLL&, "#7", $00407)'--#
PRGName$ = PRGNameN$[4]'---------------------------------#
ToolbarIcons& = 0'ici später Toolbaricon eintragen
'*******************************************************************************************************'
'*- Skalierung *'
xx! = 1.30
yy! = 1.15
'*******************************************************************************************************'
'*******************************************************************************************************'
'* Prozedurname: MainWindow *'
''******************************************************************************************************'
'* Version: V0.01 *'
'* Stand: 28.09.2020 *'
'* Info: Baut cela Hauptfenster/-dialog sur *'
'*******************************************************************************************************'
PROC MainWindow
'*******************************************************************************************************'
'*- Lokale paramètre -*'
DECLARE Handle&
DECLARE Tab&[5]
DECLARE dx%, dy%
DECLARE i%
DECLARE Ende%
'*******************************************************************************************************'
'*- Wertzuweisungen -*'
x! = 1.00
y! = 1.00
dX% = 640
dy% = 480
Ende% = 0
'*******************************************************************************************************'
'*- Fensteraufbau -*'
Handle& = CREATE("Dialog", %HWND, PrgName$, 0,0,0,0)
SETWINDOWPOS Handle& = INT((%MAXX-dx%)/2)*x!,INT((%MAXY-dy%)/2)*y! - dx%*x!, dy%*y!; 0
Toolbar& = CREATE("Toolbar", Handle&, ToolbarIcons&, 0, 0, WIDTH(Handle&), 64*y!)
TabControl&[1] = CREATE("TabCtrl", Handle&, "Vokabel", 5*x!, HEIGHT(Toolbar&) + 5*x!, WIDTH(Handle&) - 2 * 5*x!, HEIGHT(Handle&) - Height(Toolbar&)-2* 5*x! )
FOR i%, 2,5,1
TabControl&[i%] = INSERTTAB(TabControl&[1], i%,"Tab "+ STR$(i%) )
ENDFOR
'*******************************************************************************************************'
'*- Ereignishandler -*'
WHILENOT Ende%
WAITINPUT
Ende%=1
ENDWHILE
'*******************************************************************************************************'
'*- la fenêtre schließen -*'
DESTROYWINDOW(Handle&)
'*******************************************************************************************************'
ENDPROC
'*******************************************************************************************************'
'*******************************************************************************************************'
'* Hauptprogramm *'
''******************************************************************************************************'
CLS
Mainwindow
DISPOSE Begriff#
FREEDLL PRGDLL&
FIN
je serait gern une Erklärung hierfür avons
Grüße
EDIT: là qui "Deutsche Texte" dans la ligne 4 steht s. ResHacker, pourrait qui numéro 4 im Array quoi avec cela zutun avons ? |
| | | | |
| | Stephan Sonneborn | H.Brill (28.09.2020)
Mach doch alles avec Rolands eingebauten Funktionen.
Würde je volontiers faire, mais je voudrais gar pas qui Vokabeln dans einer DLL sichern, mais seulement qui Textes qui Programmoberfläche. Eigentlich brauche je cela pas pour un Vokabelprogramm, là peux qui surface oui calme dans allemande rester. mais j'ai sur qui travail un Programme entwickelt, dass dans unterschiedlichen Sprachen fonctionne. et là vais je toujours den umständlichen Weg avec den individuel DLL je Discours et dem Lecture mittels ExtString$(). je voulais simple fois le neuen Opportunités testen.
en supplément sollte je mais déjà savons, welchen String je auslese. bien sûr, je pourrait maintenant pour jeden Text une Ressourcenbereich (alors den 3. paramètre dans qui RES("GetStrings" - Funktion) festlegen. mais je dachte, und dir aussi einfacher, z.B. alle Textes sur la fenêtre 1, alle Textes sur la fenêtre 2, alle Hilfetexte trop la fenêtre 1, alle Hilfetexte trop la fenêtre 2 u.s.w. jeweils dans une Resourcenbereich enlever. avec cela wäre qui DLL viel übersichtlicher, insbesondere ensuite, si on qui Text-Nummern ensuite libre festlegen peux, z.B. 100-199 pour qui Fenstertexte, 200-299 pour qui zugehörigen Hilfetexte u.s.w.
j'ai mir pour dans Excel une Tabelle erstellt: dans Spalte A qui numéro, dans Spalte B un Komma, dans Spalte C l'Allemand Text, dans D ensuite qui Englische. dans den Spalten E et F wird ensuite daraus qui Eintrag pour qui DLL generiert: numéro & Komma & Text dans qui jeweiligen Discours. après peux je ensuite dans Excel simple qui ganze Spalte kopieren et im Resource Builder insérer. Fertig! |
| | | XProfan X4Schöne Grüße aus Wittgenstein von Stephan Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 28.09.2020 ▲ |
| |
| | Stephan Sonneborn | Georg Teles (28.09.2020)
Mir fällt sur, dass PRGName$ = RES("GetStrings", PRGDLL&, "#100", $00407) un Array zurückgibt, mais je bekomme es aussi pas hin, es auszulesen
Georg Teles (28.09.2020)
So funktioniert es, mais je comprends pas pourquoi Déclarer PRGNameN$ '-------------------------------------# PRGNameN$ = RES("GetStrings", PRGDLL&, "#7", $00407) '--# PRGName$ = PRGNameN$ '---------------------------------#
je hatte aussi déjà une variablen Array probiert avec "#7" comme 3. paramètre. Weil qui ResHacker là plan une 7 écrit. pourquoi? je sais es pas...
cela fait aussi seulement qui ResHacker. qui Resource Builder pouvoir cela pas. Pour cette peux qui aussi pas avec Texten comme 3. paramètre (z.B. dem "MONAT" dans Rolands Beispiel) vivre.
Georg Teles (28.09.2020)
EDIT: là qui "Deutsche Texte" dans la ligne 4 steht s. ResHacker, pourrait qui numéro 4 im Array quoi avec cela zutun avons ?
chez mir erhalte je comme Rückgabewert pour den PRGName$ la valeur "8", zumindest wird cela comme Fenstertitel angezeigt... Pour PRGNameN$ incidemment aussi...
|
| | | XProfan X4Schöne Grüße aus Wittgenstein von Stephan Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 28.09.2020 ▲ |
| |
| | E.T. | je nutze pour quelque chose comme sans Probleme ExtString$ , z.B. so:
SetText Status&, 0, @ExtString$(Prg_Dll& ,40)
ou bien
Checker&[22] = @Créer(Bouton Radio ",Static_1&[0],@ExtString$(Prg_Dll& ,24),570,305,200,20)
qui paramètre ist ensuite oui c'est ca qui numéro, quelle z.B. im ResHacker oui c'est ca avant dem Texteintrag steht. Im Bsp. plus dessus alors 1584 pour "Januar" , 1585 pour "Februar" usw... |
| | | Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 28.09.2020 ▲ |
| |
| | Stephan Sonneborn | E.T. (28.09.2020)
je nutze pour quelque chose comme sans Probleme ExtString$ , z.B. so: SetText Status&, 0, @ExtString$(Prg_Dll& ,40)
ou bien
Checker&[22] = @Créer(Bouton Radio ",Static_1&[0],@ExtString$(Prg_Dll& ,24),570,305,200,20)
qui paramètre ist ensuite oui c'est ca qui numéro, quelle z.B. im ResHacker oui c'est ca avant dem Texteintrag steht. Im Bsp. plus dessus alors 1584 pour "Januar" , 1585 pour "Februar" usw...
So fais je cela normalement aussi. mais avec cela peux on pas avec unterschiedlichen Sprachen travailler. ou bien on muss avec unterschiedlichen Nummernkreisen travailler, quoi je pas voudrais... |
| | | XProfan X4Schöne Grüße aus Wittgenstein von Stephan Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 29.09.2020 ▲ |
| |
| | E.T. | Versch. Sprachen pour qui Programmoberfläche packe je toujours dans un "verkappte" .ini-Dossier (avec "falscher" Erweiterung). Pro Discours une Dossier. Lässt sich m.M. pour einfacher Travailler bzw. erweitern, comme comment chaque fois le .dll trop Travailler. |
| | | XProfan 11Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 29.09.2020 ▲ |
| |
| | | | - page 2 - |
| | Georg Teles | Guten demain,
Stephan Sonneborn (28.09.2020)
chez mir erhalte je comme Rückgabewert pour den PRGName$ la valeur "8", zumindest wird cela comme Fenstertitel angezeigt... Pour PRGNameN$ incidemment aussi...
RES gibt oui aussi une ARRAY zurück, chez dir versucht qui Befehl
PRGName$ = RES("GetStrings", PRGDLL&, "#7", $00407)
PRGNameN$ = RES("GetStrings", PRGDLL&, "#7", $00407)
den ARRAY dans une String trop zwingen, 8 vermute je ist le nombre qui Cordes dans diesem ARRAY --- du müsstest entsprechend denen String PRGNameN$ comme ARRAY définir, alors PRGNameN$[] et aus diesem ensuite deine Cordes heraussuchen
PRGNameN$[] = RES("GetStrings", PRGDLL&, "#7", $00407)
String1$ = PRGNameN$[0]
String2$ = PRGNameN$[1]
...
à vrai dire vois je chez dem Befehl RES aussi pas par et habe es encore nie angewandt --- personnelle serait je comment ET déjà schrieb avec qui Cordes aus qui EXE/DLL auslesen, si es so nötig son soll
chez meinen mehrsprachigen Programmen verwende je une ARRAY interne, je pour Discours wird qui ARRAY ensuite entsprechend pleine - c'est einfacher.
so nebenbei: Habe jusqu'à maintenant seulement chez TrackMenüs qui Ressourcen dans qui EXE pour mehrsprachige Verwendung benutzt, cela erspart ensuite wesentlich den Aufbau des TrackMenüs - extern magasin et Montrer [...]
cela sieht im ResHacker ensuite so aus:
Grüße |
| | | | |
| | H.Brill | Könnte on oui aussi comme RC_DATA Ressource faire, zumal il oui déjà une Exceldatei hat. qui peux on oui aussi comme normale Textdatei dans Excel Sauver :
Déclarer string Menu[], Memory Bereich, Long groesse, anzahl, hdll, info
Def %RT_RCDATA 10
/*
cela comme Textdatei Sauver et dem Reshacker
comme RC_DATA sous TEXTE insérer :
100, Dossier,File
101,Öffnen,Open
102,Schließen,Fermer
*/
cls
hdll = UseDLL("E:\vokabeln.dll")
info = Res("Info", hdll, %RT_RCDATA, "TEXTE", 0)
groesse = Res("Size", hdll, info)
Faible Bereich, groesse
Bereich = Res("Get", hdll, info)
anzahl = Len(String$(Bereich, 0), Chr$(13))
' ou bien juste avec
' Menu[] = Explode(String$(Bereich, 0), Chr$(13))
' ins Array transferieren.
WhileLoop 1, anzahl
Imprimer $ Substr(String$(Bereich, 0), &LOOP, Chr$(13))
' ici peux qui ganze String(Nr, allemande, Englisch)
' nochmals untergliedert volonté.
Endwhile
WaitInput
FreeDll hdll
Dispose Bereich
end
peut-être venez il oui so plus. |
| | | Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 30.09.2020 ▲ |
| |
| | Stephan Sonneborn | Pour quelque chose Überlegung et nochmaliger "genauer" Inaugenscheinnahme qui Aider
habe je mir folgendes Construire gebaut:
StringID& = 100
Sektion$ = "#"+STR$(INT(StringID&/16)+1)
Array$[] = RES("GetStrings", PRGDLL&, Sektion$, $00407)
PRGName$ = Array$[INT(StringID&-16*(INT(StringID&/16)))]
Zunächst definiere je dans einer Hilfsvariablen qui numéro des Cordes dans qui DLL. ensuite ermittele je qui Sektion, alors den 3. paramètre qui RES("Getstrings" - Funktion. ensuite peux je cela Array avec den maximum 16 Entrées füllen, dabei volonté pas belegte Nummern automatisch avec Leerstrings versehen. qui réel Variablen muss je ensuite seulement encore den richtigen Eintrag im Array zuweisen.
Ist quelque chose compliqué, sollte mais marcher... |
| | | XProfan X4Schöne Grüße aus Wittgenstein von Stephan Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 30.09.2020 ▲ |
| |
| | E.T. | bof, pourquoi simple, wenns compliqué aussi allez
... mais jeden cela sa
Hab solch une Ansatz aussi la fois per .dll versucht, Tricolore mais ensuite aufgegeben. Hatte ensuite pro Discours simple une sep. dll-Dossier gemacht, quelle chez Prog-Start geladen wurde.
suis ensuite chez meiner o.g. Version avec jeweils einer Sprach-Dossier pro Discours geblieben. cela peut sich pour mich am einfachsten Travailler et erweitern. |
| | | XProfan 11Grüße aus Sachsen... Mario WinXP, Win7 (64 Bit),Win8(.1),Win10, Win 11, Profan 6 - X4, XPSE, und 'nen schwarzes, blinkendes Dingens, wo ich das alles reinschütte... | 04.10.2020 ▲ |
| |
| | Stephan Sonneborn | | | | XProfan X4Schöne Grüße aus Wittgenstein von Stephan Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 04.10.2020 ▲ |
| |
| | H.Brill | alors chez mir funktioniert cela :
Déclarer String Menu1[], Menu2[]
Déclarer Memory Bereich1, Bereich2
Déclarer Long groesse1, groesse2, anzahl, hdll, info_d, info_e
Def %RT_RCDATA 10
/*
cela comme Textdateien Sauver et dem Reshacker
comme RCDATA sous DEUTSCH et ENGLISCH insérer :
allemande.txt :
Öffnen
Sauver
Schließen
Englisch.txt :
Open
Save
Fermer
*/
cls
hdll = UseDLL("E:\Sprachen.dll")
info_d = Res("Info", hdll, %RT_RCDATA, "DEUTSCH", 0)
info_e = Res("Info", hdll, %RT_RCDATA, "ENGLISCH", 0)
groesse1 = Res("Size", hdll, info_d)
Faible Bereich1, groesse1
groesse2 = Res("Size", hdll, info_e)
Faible Bereich2, groesse2
Bereich1 = Res("Get", hdll, info_d)
Bereich2 = Res("Get", hdll, info_e)
anzahl = Len(String$(Bereich1, 0), Chr$(13))
Menu1[] = Explode(String$(Bereich1, 0), Chr$(13))
anzahl = Len(String$(Bereich2, 0), Chr$(13))
Menu2[] = Explode(String$(Bereich2, 0), Chr$(13))
PopUp "&Datei"
AppendMenu 100, Menu1[0]
AppendMenu 101, Menu1[1]
AppendMenu 102, Menu1[2]
PopUp "&File"
AppendMenu 100, Menu2[0]
AppendMenu 101, Menu2[1]
AppendMenu 102, Menu2[2]
WaitInput
FreeDll hdll
Dispose Bereich1, Bereich2
end
il faut seulement puis achten, qui beiden Ressourcen synchron trop tenir. on pourrait aussi encore avant qui Menütexte payons écrivons, à Menüpunkte aus den Array besser trop identifier. ou bien arrêt alles zusammen (100, Öffnen, Open) . cela ganze ist oui ensuite léger avec Substr$() rauszuziehen. là gibt es oui Opportunités genug, um quelque chose comme trop realisieren. |
| | | Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 04.10.2020 ▲ |
| |
|
répondreOptions du sujet | 7.434 Views |
Themeninformationencet Thema hat 5 participant: |