Foro | | | | - Página 1 - |
| Stephan Sonneborn | ¡Hola, en el LEER32.DLL Yo testweise con el ResourceBuilder zwei Cuerdas eingefügt:
una vez en la lengua Alemán $0407 o. 1031:
y una vez en la lengua Inglés $0809 o. 2057:
El DLL Yo encima USEDLL eingebunden. Den Texto weise Yo así a:
DE_Text$ = RES("GetStrings", PRGDLL&, 100, $00407)
EN_Text$ = RES("GetStrings", PRGDLL&, 100, $00809)
Aber Yo bekomme el Fehlermeldung "String-Ressource No se ha encontrado: #100".
Was es falso? |
| | | XProfan X4Schöne Grüße aus Wittgenstein von Stephan Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 28.09.2020 ▲ |
| |
| | | | | - Página 1 - |
| Georg Teles | Mir fällt en, dass
PRGName$ = RES("GetStrings", PRGDLL&, "#100", $00407)
una Array zurückgibt, pero yo bekomme lo auch no hin, lo auszulesen
So funktioniert lo, pero yo verstehe no por qué
Declarar PRGNameN$[]'-------------------------------------#
PRGNameN$[] = RES("GetStrings", PRGDLL&, "#7", $00407)'--#
PRGName$ = PRGNameN$[4]'---------------------------------#
ganzer Code
'*******************************************************************************************************'
'* Programa: Vokabeltrainer *'
''******************************************************************************************************'
'* Versión: V0.01 *'
'* Stand: 28.09.2020 *'
'* Info: Vokabeltrainer *'
'*******************************************************************************************************'
'*******************************************************************************************************'
'* Klassendefinition *'
'*******************************************************************************************************'
CLASS Vokabel = Wort$(21), \
Uebersetzung$(21), \
Genus$(2), \
Casus$(13), \
Numerus$(11), \
Verb1$(21), \
Verb22$(21), \
Verb3$(21), \
Lektion$(13)', \
' Anlegen&, \
' Importieren@, \
' Exportieren@, \
' Vorlesen@
'*******************************************************************************************************'
'*******************************************************************************************************'
'* Variablendeklaration *'
'*******************************************************************************************************'
'*- Programa -*'
DECLARE PRGDLL&
DECLARE PrgName$
DECLARE x!, xx!, y!, yy!
'*******************************************************************************************************'
'*- Diálogo -*'
DECLARE DlgText&[5,30], DlgText$[5,30]
DECLARE DlgEdit&[5,30]
DECLARE ToolBar&, ToolbarIcons& , TabControl&[5]
'*******************************************************************************************************'
'*- Vobaln -*'
DECLARE Begriff#
DECLARE String Textos[]
'*******************************************************************************************************'
'*******************************************************************************************************'
'* Variablendimensionierung *'
'*******************************************************************************************************'
DIM Begriff#, Vokabel
'*******************************************************************************************************'
'*******************************************************************************************************'
'* Wertzuweisungen *'
'*******************************************************************************************************'
PRGDLL& = USEDLL("Vokabeln_32.DLL")
'PRGName$ = RES("GetStrings", PRGDLL&, "#100", $00407)
'PRGName$ = EXTSTRING$(PRGDLL&, 100)
Declarar PRGNameN$[]'-------------------------------------#
PRGNameN$[] = RES("GetStrings", PRGDLL&, "#7", $00407)'--#
PRGName$ = PRGNameN$[4]'---------------------------------#
ToolbarIcons& = 0'Hier später Toolbaricon eintragen
'*******************************************************************************************************'
'*- Skalierung *'
xx! = 1.30
yy! = 1.15
'*******************************************************************************************************'
'*******************************************************************************************************'
'* Prozedurname: MainWindow *'
''******************************************************************************************************'
'* Versión: V0.01 *'
'* Stand: 28.09.2020 *'
'* Info: Baut la ventana principal/-dialog en *'
'*******************************************************************************************************'
PROC MainWindow
'*******************************************************************************************************'
'*- Lokale Parámetro -*'
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
'*******************************************************************************************************'
'*- Ventana schließen -*'
DESTROYWINDOW(Handle&)
'*******************************************************************************************************'
ENDPROC
'*******************************************************************************************************'
'*******************************************************************************************************'
'* Hauptprogramm *'
''******************************************************************************************************'
CLS
Mainwindow
DISPOSE Begriff#
FREEDLL PRGDLL&
FIN
Yo sería gern una Erklärung esta haben
Grüße
EDIT: Como el "Deutsche Texte" en Línea 4 es s. ResHacker, podría el Nummer 4 en el Array qué así zutun haben ? |
| | | | |
| | Stephan Sonneborn | H.Brill (28.09.2020)
Mach doch alles con Rolands eingebauten Características.
Würde Me gusta hacer, pero yo möchte nada el Vokabeln en uno DLL sichern, pero sólo el Textos el Programmoberfläche. Eigentlich brauche Yo el no para una Vokabelprogramm, como kann el Oberfläche sí ruhig en Alemán bleiben. Aber Yo en el Arbeit una Programa entwickelt, dass en unterschiedlichen Idiomas se ejecuta. Und como gehe Yo siempre todavía el umständlichen Weg con el individual DLL je Lingua y el Auslesen mittels ExtString$(). Yo quería simplemente veces el neuen Möglichkeiten testen.
Dazu debería Yo aber ya wissen, welchen String Yo auslese. Klar, Yo podría ahora para cada Texto una Ressourcenbereich (also el 3. Parámetro en el RES("GetStrings" - Función) festlegen. Aber Yo pensamiento, lo va auch einfacher, z.B. todos Textos en Ventana 1, todos Textos en Ventana 2, todos Hilfetexte a Ventana 1, todos Hilfetexte a Ventana 2 u.s.w. jeweils en una Resourcenbereich ablegen. Damit wäre el DLL viel übersichtlicher, insbesondere entonces, si uno el Texto-Nummern entonces frei festlegen kann, z.B. 100-199 para el Fenstertexte, 200-299 para el zugehörigen Hilfetexte u.s.w.
Yo habe me dafür en Excel una tabla erstellt: en Spalte A el Nummer, en Spalte B una Komma, en Spalte C el Alemán Texto, en D entonces el Englische. In el Spalten E y F se entonces lo el Eintrag para el DLL generiert: Nummer & Komma & Texto en el jeweiligen Lingua. Danach kann Yo entonces en Excel simplemente el todo Spalte kopieren y en el Resource Builder einfügen. 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 en, dass PRGName$ = RES("GetStrings", PRGDLL&, "#100", $00407) una Array zurückgibt, pero yo bekomme lo auch no hin, lo auszulesen
Georg Teles (28.09.2020)
So funktioniert lo, pero yo verstehe no por qué Declarar PRGNameN$ '-------------------------------------# PRGNameN$ = RES("GetStrings", PRGDLL&, "#7", $00407) '--# PRGName$ = PRGNameN$ '---------------------------------#
Tuve auch ya una variablen Array probiert con "#7" como 3. Parámetro. Weil el ResHacker como eben una 7 schreibt. ¿Por qué? Yo weiß no...
Das macht auch sólo el ResHacker. Der Resource Builder macht el no. Dafür kann el auch no con Texten como 3. Parámetro (z.B. el "MONAT" en Rolands Ejemplo) leben.
Georg Teles (28.09.2020)
EDIT: Como el "Deutsche Texte" en Línea 4 es s. ResHacker, podría el Nummer 4 en el Array qué así zutun haben ?
En me erhalte Yo como Rückgabewert para el PRGName$ valor "8", zumindest se como el Fenstertitel adecuado... Für PRGNameN$ de paso auch...
|
| | | XProfan X4Schöne Grüße aus Wittgenstein von Stephan Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 28.09.2020 ▲ |
| |
| | E.T. | Yo nutze para algo como sin Problemas ExtString$ , z.B. así:
SetText Status&, 0, @ExtString$(Prg_Dll& ,40)
oder
Checker&[22] = @Crear("Radio Button",Static_1&[0],@ExtString$(Prg_Dll& ,24),570,305,200,20)
Der Parámetro es entonces genau el Zahl, welche z.B. en el ResHacker genau antes el Texteintrag es. Im Bsp. más oben also 1584 para "Januar" , 1585 para "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)
Yo nutze para algo como sin Problemas ExtString$ , z.B. así: SetText Status&, 0, @ExtString$(Prg_Dll& ,40)
oder
Checker&[22] = @Crear("Radio Button",Static_1&[0],@ExtString$(Prg_Dll& ,24),570,305,200,20)
Der Parámetro es entonces genau el Zahl, welche z.B. en el ResHacker genau antes el Texteintrag es. Im Bsp. más oben also 1584 para "Januar" , 1585 para "Februar" usw...
So mache Yo el normalerweise auch. Aber así puede ser no con unterschiedlichen Idiomas trabajo. Oder uno muss con unterschiedlichen Nummernkreisen trabajo, Yo no möchte... |
| | | XProfan X4Schöne Grüße aus Wittgenstein von Stephan Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 29.09.2020 ▲ |
| |
| | E.T. | Versch. Idiomas para el Programmoberfläche packe Yo siempre en un "verkappte" .ini-Expediente (con "falscher" Erweiterung). Pro Lingua una Expediente. Lässt se m.M. después de einfacher bearbeiten o. erweitern, como como cada veces el .dll a bearbeiten. |
| | | 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 ▲ |
| |
| | | | - Página 2 - |
| | Georg Teles | Bueno Morgen,
Stephan Sonneborn (28.09.2020)
En me erhalte Yo como Rückgabewert para el PRGName$ valor "8", zumindest se como el Fenstertitel adecuado... Für PRGNameN$ de paso auch...
RES son en efecto una ARRAY zurück, en dir intenta el Befehl
PRGName$ = RES("GetStrings", PRGDLL&, "#7", $00407)
PRGNameN$ = RES("GetStrings", PRGDLL&, "#7", $00407)
el ARRAY en una String a zwingen, 8 vermute Yo Es el Anzahl el Cuerdas en diesem ARRAY --- du müsstest entsprechend denen String PRGNameN$ como ARRAY definieren, also PRGNameN$[] y de diesem entonces deine Cuerdas heraussuchen
PRGNameN$[] = RES("GetStrings", PRGDLL&, "#7", $00407)
String1$ = PRGNameN$[0]
String2$ = PRGNameN$[1]
...
Ehrlich dijo sehe Yo en el Befehl RES auch no por y habe lo todavía nie angewandt --- persönlich sería Yo como ET ya schrieb con el Cuerdas de el EXE/DLL auslesen, si así nötig ser se
En media mehrsprachigen Programmen verwende Soy un ARRAY intern, je después de Lingua se el ARRAY entonces entsprechend gefüllt - el es einfacher.
así nebenbei: Posesiones a ahora sólo en TrackMenüs el Ressourcen en el EXE para mehrsprachige Verwendung benutzt, el erspart entonces wesentlich el Aufbau des TrackMenüs - extern invitar y Mostrar [...]
el sieht en el ResHacker entonces así de:
Grüße |
| | | | |
| | H.Brill | Könnte uno en efecto como RC_DATA Ressource hacer, especialmente él sí ya una Exceldatei ha. El puede ser sí auch como normale Textdatei en Excel speichern :
Declarar cadena Menu[], Memory Zona, Largo groesse, anzahl, hdll, info
Def %RT_RCDATA 10
/*
Das como Textdatei speichern y el Reshacker
como RC_DATA bajo TEXTE einfügen :
100, Expediente,File
101,Öffnen,Open
102,Schließen,Cerrar
*/
cls
hdll = UseDLL("E:\vokabeln.dll")
info = Res("Info", hdll, %RT_RCDATA, "TEXTE", 0)
groesse = Res("Size", hdll, info)
Dim Zona, groesse
Zona = Res("Get", hdll, info)
anzahl = Len(String$(Zona, 0), Chr$(13))
' Oder igual con
' Menu[] = Explode(String$(Zona, 0), Chr$(13))
' en el Array transferieren.
WhileLoop 1, anzahl
Imprimir Substr$(String$(Zona, 0), &LOOP, Chr$(13))
' hier kann el todo String(Nr, Alemán, Inglés)
' nochmals untergliedert voluntad.
EndWhile
WaitInput
FreeDll hdll
Disponer Zona
end
Tal vez kommt él sí así más. |
| | | 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 | Nach algo Überlegung y nochmaliger "genauer" Inaugenscheinnahme el Ayuda
Yo me folgendes Konstrukt 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 Yo en uno Hilfsvariablen el Nummer des Cuerdas en el DLL. Dann ermittele Yo el Sektion, also el 3. Parámetro el RES("Getstrings" - Función. Dann kann Yo el Array con el máximo 16 Einträgen füllen, esta voluntad no belegte Nummern automáticamente con Leerstrings versehen. Der real Variables muss Yo entonces sólo todavía el richtigen Eintrag en el Array zuweisen.
Ist algo umständlich, debería aber trabajo... |
| | | XProfan X4Schöne Grüße aus Wittgenstein von Stephan Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 30.09.2020 ▲ |
| |
| | E.T. | Naja, por qué simplemente, wenns umständlich auch va
... aber cada el seine
Hab solch una Ansatz auch veces por .dll intenta, Habs aber entonces aufgegeben. Hatte entonces pro Lingua simplemente una sep. dll-Expediente gemacht, welche en Prog-Start geladen wurde.
Bin entonces en meiner o.g. Versión con jeweils uno Sprach-Expediente pro Lingua geblieben. Das lässt se para mich al einfachsten Editar y 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 | Also en me funktioniert el :
Declarar String Menu1[], Menu2[]
Declarar Memory Zona1, Zona2
Declarar Largo groesse1, groesse2, anzahl, hdll, info_d, info_e
Def %RT_RCDATA 10
/*
Das como Textdateien speichern y el Reshacker
como RCDATA bajo DEUTSCH y ENGLISCH einfügen :
Alemán.txt :
Öffnen
Guardar
Schließen
Inglés.txt :
Open
Save
Cerrar
*/
cls
hdll = UseDLL("E:\Idiomas.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)
Dim Zona1, groesse1
groesse2 = Res("Size", hdll, info_e)
Dim Zona2, groesse2
Zona1 = Res("Get", hdll, info_d)
Zona2 = Res("Get", hdll, info_e)
anzahl = Len(String$(Zona1, 0), Chr$(13))
Menu1[] = Explode(String$(Zona1, 0), Chr$(13))
anzahl = Len(String$(Zona2, 0), Chr$(13))
Menu2[] = Explode(String$(Zona2, 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
Disponer Zona1, Zona2
end
Man muß sólo darauf achten, el beiden Ressourcen synchron a halten. Man podría auch todavía antes el Menütexte Pagar escribir, a Menüpunkte de el Array mejor a identifizieren. Oder sólo alles zusammen (100, Öffnen, Open) . Das todo es sí entonces ligeramente con Substr$() rauszuziehen. Puesto que hay lo sí Möglichkeiten genug, en algo como a 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 ▲ |
| |
|
RespuestaThemeninformationenDieses Thema ha 5 subscriber: |