Discussion:
Hamsterhilfe im chm-Format
(zu alt für eine Antwort)
Heiko Rost
2022-05-17 07:56:36 UTC
Permalink
Hallo,

nach langer Zeit (persönliche Probleme) ein Update der Hilfedatei. Es
sind jetzt für alle Dialogfenster aktuelle Hilfetexte enthalten,

Für die vollständige Unterstützung der F1-Taste sind teilweise noch
Änderungen am Hamster-Quelltext notwendig, das kann nur Alfred Peters
machen. Die Änderungen an der hamster_de.dat kann bis dahin jeder vom
Prinzip her selber vornehmen. Nähere Angaben sind in der Datei
"Änderungen Hamsters.txt" in "hamsterhilfe_de_source.zip" zu finden.

Download: <https://heiros.lima-city.de/temp/hamsterhilfe_de_chm.zip>

Gruß Heiko
--
Besser ein freier Teufel als ein gebundener Engel.
Peter Hille
Ingo Steinbuechel
2022-05-17 08:39:46 UTC
Permalink
Hallo Heiko,
Post by Heiko Rost
ein Update der Hilfedatei.
vielen lieben Dank.

Gruß Ingo
--
Threema - Sicherer und privater Messenger: https://threema.ch/de
Meine Threema-ID: https://threema.id/ZV9BWDXK
Warum Threema? https://warumthreema.de/
Thomas Barghahn
2022-05-17 09:22:38 UTC
Permalink
Post by Heiko Rost
nach langer Zeit (persönliche Probleme) ein Update der Hilfedatei. Es
sind jetzt für alle Dialogfenster aktuelle Hilfetexte enthalten,
Für die vollständige Unterstützung der F1-Taste sind teilweise noch
Änderungen am Hamster-Quelltext notwendig, das kann nur Alfred Peters
machen. Die Änderungen an der hamster_de.dat kann bis dahin jeder vom
Prinzip her selber vornehmen. Nähere Angaben sind in der Datei
"Änderungen Hamsters.txt" in "hamsterhilfe_de_source.zip" zu finden.
Eine *** *ausgezeichnete Arbeit* ***! :-) Auch die Änderungen in der
Datei "hamster_de.dat" sind im Handumdrehen gemacht. :-)

Ein Traum wäre jetzt noch, wenn auch TLS1.3 im Hamster Einzug halten
würde. So wäre der Hamster auch für die nächsten 15 bis 20 Jahre für das
UseNet *und* dem Mailversand gewappnet. ;-)

Vielen herzlichen Dank!

Thomas 😷 💉︎💉︎💉︎ ✔️
--
== S E N D E Z E I T =============
DATUM : DIENSTAG, 17. MAI 2022
UHRZEIT: 11:22:38 UHR (MESZ)
== Heute: Tag der Sammelwütigen ==
Alfred Peters
2022-05-28 15:49:19 UTC
Permalink
Post by Heiko Rost
Hallo,
nach langer Zeit (persönliche Probleme) ein Update der Hilfedatei. Es
sind jetzt für alle Dialogfenster aktuelle Hilfetexte enthalten,
Für die vollständige Unterstützung der F1-Taste sind teilweise noch
Änderungen am Hamster-Quelltext notwendig, das kann nur Alfred Peters
machen.
😘 - Sorry, das hatte ich irgendwie aus den Augen verloren.

Done:
* Hamster_2101545.zip Size: 1,1 MB
<https://app.box.com/s/rxgjnwe2gvwl7arsuw0cg7goepzxv88v>

Hamster.exe & Hamster_de.dat
Post by Heiko Rost
Die Änderungen an der hamster_de.dat kann bis dahin jeder vom
Prinzip her selber vornehmen. Nähere Angaben sind in der Datei
"Änderungen Hamsters.txt" in "hamsterhilfe_de_source.zip" zu finden.
Download: <https://heiros.lima-city.de/temp/hamsterhilfe_de_chm.zip>
["Änderungen Hamsters.txt"]

| Nötige Änderungen im Hamster-Quelltext und Hamsterdateien
| =========================================================
|
| "TfrmKillsMain.FormCreate" und "TfrmMailKillsMain.FormCreate"
| Bei diesen Formularen werden die "Einträge"-Menüpunkte dynamisch erzeugt, dort fehlt
| M.HelpContext := HelpContext;

✅ Done.

| Das ist der Grund, warum bei Markieren eines Menüepunktes unter "Einträge" aus der Menüleiste
| und F1 nicht der zum Eintrag gehörende Hilfetext angezeigt wird, sondern immer der für "Einträge".
|
| Keine Ursache im Code gefunden, deshalb kein Änderungsvorschlag
| ===============================================================
| Wenn man im Hauptfenster im Kontextmenü den Mauszeiger genau auf einen der
| Menüseparatoren hält (also kein Menüpunkt markiert ist) und F1 drückt, versucht der
| Hamster die kontextsensitive Hilfe für diesen Separator aufzurufen, findet dazu keine HelpID
| und ruft dann die Hilfe mit ID 0 auf. Das Problem scheint bei allen Kontextmenüs zu existieren,
| normale Menüs machen das nicht.

Die normalen Menüs sind Sub-Menüs des (Haupt-)Menü-Balkens. Die
Separatoren scheinen die ID des übergeordneten Menü-Eintrags zu
übernehmen. Ein Kontext-Menü hat keinen übergeordneten Eintrag.

Das ist aber nur eine Vermutung.

| Die Fenster "Lokale Server"-"News-/Mailverzeichnisse" und "Skripte"-"Skripte und Module verwalten..."
| bewirken bei F1 den Aufruf der Callback-Funktion THamsterMainWindow.AppHelp(HELP_INDEX,0), womit letzendlich
| nur die Hauptseite der Hilfe aufgerufen werden kann. Hilfebutton/-Menü funktionieren. Bug oder Feature?

Ich habe keinen Unterschied zu anderen Formularen gefunden. Funkt da die
RX-Lib dazwischen?

| Fehlende Übersetzunghen in Sprachdatei
| ======================================
| Der Dialog TfrmHighlight ("Einstellungen" -"News: Killfileprotololl/-Einstellungen" - Kontextmenü "Highlight"
| ist komplett unübersetzt.

✅ Done.

| Änderungen in der Sprachdatei
| =============================
| [HelpIDs]

✅ Done.

Alfred
--
22404.7
Thomas Barghahn
2022-05-28 17:51:37 UTC
Permalink
Post by Alfred Peters
[...]
* Hamster_2101545.zip Size: 1,1 MB
<https://app.box.com/s/rxgjnwe2gvwl7arsuw0cg7goepzxv88v>
[...]
Vielen herzlichen Dank! :-)

Thomas 😷 💉︎💉︎💉︎ ✔️
--
== S E N D E Z E I T ==========================
DATUM : SONNABEND, 28. MAI 2022
UHRZEIT: 19:51:37 UHR (MESZ)
== Heute: Internationaler Tag des Hamburgers ==
Heiko Rost
2022-05-28 19:18:08 UTC
Permalink
Post by Alfred Peters
| Wenn man im Hauptfenster im Kontextmenü den Mauszeiger genau auf einen der
| Menüseparatoren hält (also kein Menüpunkt markiert ist) und F1 drückt, versucht der
| Hamster die kontextsensitive Hilfe für diesen Separator aufzurufen, findet dazu keine HelpID
| und ruft dann die Hilfe mit ID 0 auf. Das Problem scheint bei allen Kontextmenüs zu existieren,
| normale Menüs machen das nicht.
Die normalen Menüs sind Sub-Menüs des (Haupt-)Menü-Balkens. Die
Separatoren scheinen die ID des übergeordneten Menü-Eintrags zu
übernehmen. Ein Kontext-Menü hat keinen übergeordneten Eintrag.
Das ist aber nur eine Vermutung.
Das hat mich auf eine Spur gebracht: Alle Menüeinträge bekommen in
TranslateAll einen HelpContext entsprechend der Sprachdatei, wobei die
Separatoren von der Funktion ignoriert werden und die 0 behalten. Das
Hilfesystem von Delphi findet dann auch in den übergeordneten
Komponenten keinen anderen Wert, und ruft die Hilfe deshalb mit dieser 0
auf.

Die beste Lösung dürfte dann sein, den Separatoren in TranslateAll die
Hilfenummer des übergeordneten Dialogfensters zu geben:

...
If c is TMenuItem then With TMenuItem(c) do begin
If (Name > '') then begin
s:='';
if (Caption <> '-') then begin
Bez := 'MI.'+Name;
Caption := Test(Bez, caption);
Hint := Test(Bez+'.hint', hint);
s := Lang.HelpID(Abschnitt+'/'+Name, true);
end else begin
s:=Lang.HelpID(self.ClassName,true);
end;
If s > '' then try
HelpContext := StrToInt(s)
except end
end else begin
end
end else
...

Auf das Skriptfenster hat das, fast wie zu erwarten, keine Auswirkung.
Post by Alfred Peters
| Die Fenster "Lokale Server"-"News-/Mailverzeichnisse" und "Skripte"-"Skripte und Module verwalten..."
| bewirken bei F1 den Aufruf der Callback-Funktion THamsterMainWindow.AppHelp(HELP_INDEX,0), womit letzendlich
| nur die Hauptseite der Hilfe aufgerufen werden kann. Hilfebutton/-Menü funktionieren. Bug oder Feature?
Ich habe keinen Unterschied zu anderen Formularen gefunden. Funkt da die
RX-Lib dazwischen?
Einen Unterschied habe ich jetzt gefunden: Die betreffenden Dialoge sind
nicht modal. Der Lösung hat mich das aber nicht näher gebracht.

Gruß Heiko
--
So mancher meint, ein gutes Herz zu haben, und hat nur schwache Nerven.
Marie Freifrau von Ebner-Eschenbach
Alfred Peters
2022-05-29 09:55:15 UTC
Permalink
Post by Heiko Rost
Die beste Lösung dürfte dann sein, den Separatoren in TranslateAll die
...
If c is TMenuItem then With TMenuItem(c) do begin
If (Name > '') then begin
OK, übernommen.
Post by Heiko Rost
Auf das Skriptfenster hat das, fast wie zu erwarten, keine Auswirkung.
Post by Alfred Peters
| Die Fenster "Lokale Server"-"News-/Mailverzeichnisse" und "Skripte"-"Skripte und Module verwalten..."
| bewirken bei F1 den Aufruf der Callback-Funktion THamsterMainWindow.AppHelp(HELP_INDEX,0), womit letzendlich
| nur die Hauptseite der Hilfe aufgerufen werden kann. Hilfebutton/-Menü funktionieren. Bug oder Feature?
Ich habe keinen Unterschied zu anderen Formularen gefunden. Funkt da die
RX-Lib dazwischen?
Einen Unterschied habe ich jetzt gefunden: Die betreffenden Dialoge sind
nicht modal. Der Lösung hat mich das aber nicht näher gebracht.
Normal landet [F1] hier:
| procedure THForm.GeneralFormKeyDown(Sender: TObject; var Key: Word;
| Shift: TShiftState);
| begin
| If Key = vk_F1 then
| Help
| end;

THForm.Help() sucht die ID raus und ruft dann
| THamsterMainWindow.AppHelp(Command: Word; Data: ...
auf mit Command = HELP_COMMAND und Data = ID.

[F1] in DlgScripts landet in Main.pas:
| procedure THamsterMainWindow.mnuHelpContentsClick(Sender: TObject);
| begin
| If Not Allowed(Sender) then
| Exit;
| Application.HelpCommand( HELP_CONTENTS, 0 );
| end;

Das landet auch in AppHelp(), was aber mit Command = HELP_CONTENTS
nichts anfangen kann. Daher dann:

| if not ok then begin
| retvalue := HtmlHelp(GetDesktopWindow,pchar(Application.Helpfile),HH_DISPLAY_TOPIC,0);

Ursache:

| procedure THForm.DoCreate;
...
| c := FindComponent ('mnuHelp');
| If Assigned(c) then begin
| If c is TMenuItem then With (c as TMenuItem) do begin
| If Count = 0 then OnClick := butHelpOnClick

Andere Dialoge finden ein 'mnuHelp'. Vom Hauptfenster? Oder wird das
irgendwo dynamisch erzeugt?

Im Skript-Dialog wird aber nichts gefunden. -> Kein butHelpOnClick(). ->
Keine Kontext-Hilfe.

Alfred
--
22406.8
Alfred Peters
2022-05-29 11:37:22 UTC
Permalink
Post by Alfred Peters
| procedure THForm.DoCreate;
...
|       c := FindComponent ('mnuHelp');
|       If Assigned(c) then begin
|          If c is TMenuItem then With (c as TMenuItem) do begin
|             If Count = 0 then OnClick := butHelpOnClick
Andere Dialoge finden ein 'mnuHelp'.
Zu früh gefreut. Einstellungen->Grundeinstellungen / TfrmConfigSettings
findet da auch nichts. Und trotzdem funktioniert dort butHelpOnClick -
komisch.
Post by Alfred Peters
Vom Hauptfenster? Oder wird das
irgendwo dynamisch erzeugt?
Alfred
--
22407.0
Heiko Rost
2022-05-29 13:29:58 UTC
Permalink
Post by Alfred Peters
| procedure THForm.GeneralFormKeyDown(Sender: TObject; var Key: Word;
| Shift: TShiftState);
| begin
| If Key = vk_F1 then
| Help
| end;
Ja, das sollte eigentlich (zumindest vermute ich das) jeden Tastendruck
abfangen, weil in jedem Formular beim Erzeugen

| KeyPreview := true;
| OnKeyDown :=GeneralFormKeyDown;

gesetzt wird. Das funktioniert aber nicht, weil manche Tasten gar nicht
erst das OnKeyDown auslösen. In der Hilfe zu Delphi 7 ist das auch
erklärt:

| Tastaturereignisse werden auf verschiedenen Ebenen empfangen:
|
| Auf Anwendungsebene über das Ereignis OnMessage von Application.
|
| Tastenanschläge müssen selten auf Anwendungsebene verarbeitet werden,
| aber es ist wichtig zu wissen, dass dies die erste verfügbare Ebene
| ist.
|
| Auf Tastenkürzel-Ebene.
|
| Wenn ein Tastenkürzel definiert ist, beispielsweise als Eigenschaft
| eines Menüeintrags, wird das Tastaturereignis verarbeitet, bevor es
| für das Formular sichtbar wird.
|
| Auf Formularebene
|
| Das Formular besitzt eine Eigenschaft KeyPreview, mit der Sie
| "globale" Tastaturereignisse abfangen können.
|
| Auf Komponentenebene.
|
| Wenn Ereignisbehandlungsroutinen für Tastenanschläge auf
| Komponentenebene programmiert werden, fängt diejenige Komponente das
| Ereignis ab, die gerade den Fokus hat.

Was die Erklärung ist, warum GeneralFormKeyDown im Hauptfenster
beispielsweise nicht für F6 - F9 aufgerufen wird. Diese Tasten sind im
Online-Menü als Shortcut für einzelne Menüpunkte festgelegt und werden
deshalb bereits vorher auf Tastenkürzelebene verarbeitet.

Was ich aber eben immer noch nicht verstehe: Warum reagieren die Dialoge
so unterschiedlich, obwohl sie programmtechnisch in dieser Beziehung
identisch sein müßten.
Post by Alfred Peters
THForm.Help() sucht die ID raus und ruft dann
| THamsterMainWindow.AppHelp(Command: Word; Data: ...
auf mit Command = HELP_COMMAND und Data = ID.
F6
| procedure THamsterMainWindow.mnuHelpContentsClick(Sender: TObject);
| begin
| If Not Allowed(Sender) then
| Exit;
| Application.HelpCommand( HELP_CONTENTS, 0 );
| end;
Das landet auch in AppHelp(), was aber mit Command = HELP_CONTENTS
| if not ok then begin
| retvalue := HtmlHelp(GetDesktopWindow,pchar(Application.Helpfile),HH_DISPLAY_TOPIC,0);
Genau das ist das Problem: Die hamstereigene Verarbeitung von F1 wird
nicht aufgerufen, sondern Delphi macht das intern, ohne die im Hamster
definierten Ereignisse zu benutzen. Es scheint (wirklich nur
Konjkunktiv) so, daß Delphi bei F1 zuerst den HelpContext des Formulars
auswertet. Falls es dort 0 vorfindet (das ist letzendlich bei allen
Formularen der Fall), macht es dann irgendwelche anderen Dinge, die ich
nicht verstehe und auch keine Beschreibung dafür gefunden habe.

Wenn ich dem Formular als HelpContext die 44100 aus der hamster_de.dat
gebe, wird bei F1 die richtige Seite der Hilfe aufgerufen. Das ist
letzendlich jedoch auch keine Lösung, weil damit das Hilfesystem
statisch wird und nicht mehr auf den aktuell ausgewählten Tab reagieren
kann, wie es beispielsweise bei den Grundeinstellungen passiert.

Und nur für die beiden betreffenden Dialog eine Sonderbehandlung
einzuführen, indem sie bereits beim Erzeugen den passenden HelpContext
bekommen, gefällt mir auch nicht. Die Art und Weise, wie im Hamster die
Dialoge derzeit zur Laufzeit beim Erzeugen geändert werden, ist jetzt
schon ziemlich verwirrend, dort noch eine Ebene hinzuzufügen, macht es
nur schlimmer.
Post by Alfred Peters
| procedure THForm.DoCreate;
...
| c := FindComponent ('mnuHelp');
| If Assigned(c) then begin
| If c is TMenuItem then With (c as TMenuItem) do begin
| If Count = 0 then OnClick := butHelpOnClick
Andere Dialoge finden ein 'mnuHelp'. Vom Hauptfenster? Oder wird das
irgendwo dynamisch erzeugt?
Das ist eine der Nachbearbeitungen an den Dialogfenstern. Damit wird
sichergestellt, daß ein Menüeintrag mit dem Namen 'mnuHelp' die Hilfe
aufruft. Und zwar unabhängig davon, was in der Delphi-IDE als
Ereignisroutine für onClick festgelegt wurde.

Mit so etwas kann man hervorragend ein formularübergreifendes
Standardverhalten erzeugen, weil man die Änderungen nicht in der IDE an
jedem Formular manuell vornehmen muß. Es hat aber den großen Nachteil,
daß für andere sehr schwierig ist zu verstehen, wie die Wechselwirkungen
zwischen IDE-Vorganden und Laufzeitverhalten sind.

Gruß Heiko
--
Wer unter Menschen nur einen Engel sucht, der findet kaum Menschen.
Wer aber unter Menschen nur Menschen sucht, der findet gewiß seinen Engel.
Moritz Gottlieb Saphir
Alfred Peters
2022-05-29 14:52:32 UTC
Permalink
Post by Heiko Rost
gesetzt wird. Das funktioniert aber nicht, weil manche Tasten gar nicht
erst das OnKeyDown auslösen. In der Hilfe zu Delphi 7 ist das auch
|
| Auf Anwendungsebene über das Ereignis OnMessage von Application.
| Auf Tastenkürzel-Ebene.
| Auf Formularebene
Was die Erklärung ist, warum GeneralFormKeyDown im Hauptfenster
beispielsweise nicht für F6 - F9 aufgerufen wird. Diese Tasten sind im
Online-Menü als Shortcut für einzelne Menüpunkte festgelegt und werden
deshalb bereits vorher auf Tastenkürzelebene verarbeitet.
Stimmt auffallend. Wenn ich den ShortCut [F1] im Hauptmenü herausnehme,
Kommt [F1] beim Formular an.
Post by Heiko Rost
Was ich aber eben immer noch nicht verstehe: Warum reagieren die Dialoge
so unterschiedlich, obwohl sie programmtechnisch in dieser Beziehung
identisch sein müßten.
Tja...

Alfred
--
22407.4
Alfred Peters
2022-05-29 15:00:42 UTC
Permalink
Post by Alfred Peters
Post by Heiko Rost
Was die Erklärung ist, warum GeneralFormKeyDown im Hauptfenster
beispielsweise nicht für F6 - F9 aufgerufen wird. Diese Tasten sind im
Online-Menü als Shortcut für einzelne Menüpunkte festgelegt und werden
deshalb bereits vorher auf Tastenkürzelebene verarbeitet.
Stimmt auffallend. Wenn ich den ShortCut [F1] im Hauptmenü herausnehme,
Kommt [F1] beim Formular an.
Dann ändern wir das doch einfach zu [Strg]+[F1] und unsere Probleme sind
gelöst!?

Alfred
--
22407.4
Heiko Rost
2022-05-29 15:42:59 UTC
Permalink
Post by Alfred Peters
Post by Alfred Peters
Stimmt auffallend. Wenn ich den ShortCut [F1] im Hauptmenü herausnehme,
Kommt [F1] beim Formular an.
Dann ändern wir das doch einfach zu [Strg]+[F1] und unsere Probleme sind
gelöst!?
Noch radikaler: Gar keinen Shortcut für die Hilfe im Hauptmenü. Dann
ruft, zumindest bei den von mir getesteten Dialogfenster, F1 immer
GeneralFormKeyDown auf. Falls sich dabei nicht irgendein unerwarteter
Seiteneffekt zeigt, dürfte das die beste Lösung sein.

Gruß Heiko
--
Der Mensch ist gut, nur die Nerven sind schlecht.
Mose Ya'aqob Ben-Gavriêl
Heiko Rost
2022-05-29 16:23:25 UTC
Permalink
Post by Heiko Rost
Noch radikaler: Gar keinen Shortcut für die Hilfe im Hauptmenü. Dann
ruft, zumindest bei den von mir getesteten Dialogfenster, F1 immer
GeneralFormKeyDown auf. Falls sich dabei nicht irgendein unerwarteter
Seiteneffekt zeigt, dürfte das die beste Lösung sein.
Und schon wieder etwas gefunden: Die Popups in TDlgScripts werden
irgendwo anders aufgebaut, so daß sie von TranslateAll nicht bearbeitet
werden. Sie erzeugen keinen Eintrag in der hamster_xx.dat, über die sie
eine Hilfe-Nummer bekommen könnten. Außerdem ignorieren sie komplett die
Spracheinstellungen des Hamster und sind auf meinem deutssprachigem
Windows immer in deutsch.

Irgendwie werden es immer mehr mögliche Baustellen und nicht weniger.

Gruß Heiko
--
Jeder Zwang ist Gift für die Seele.
Ludwig Börne
Heiko Rost
2022-05-29 16:44:34 UTC
Permalink
Post by Heiko Rost
Und schon wieder etwas gefunden: Die Popups in TDlgScripts werden
irgendwo anders aufgebaut, so daß sie von TranslateAll nicht bearbeitet
werden. Sie erzeugen keinen Eintrag in der hamster_xx.dat, über die sie
eine Hilfe-Nummer bekommen könnten. Außerdem ignorieren sie komplett die
Spracheinstellungen des Hamster und sind auf meinem deutssprachigem
Windows immer in deutsch.
Es sind die Kontextmenüs in *allen* Feldern zur Texteingabe, die nicht
übersetzt sind und mit der Hilfe nicht klarkommen. Vollkommen
unabhängig, ob hlp- oder chm-Hilfe,
Post by Heiko Rost
Irgendwie werden es immer mehr mögliche Baustellen und nicht weniger.
Gruß Heiko
--
Wer unter Menschen nur einen Engel sucht, der findet kaum Menschen.
Wer aber unter Menschen nur Menschen sucht, der findet gewiß seinen Engel.
Moritz Gottlieb Saphir
Alfred Peters
2022-05-29 19:24:53 UTC
Permalink
Post by Heiko Rost
Post by Heiko Rost
Noch radikaler: Gar keinen Shortcut für die Hilfe im Hauptmenü. Dann
ruft, zumindest bei den von mir getesteten Dialogfenster, F1 immer
GeneralFormKeyDown auf. Falls sich dabei nicht irgendein unerwarteter
Seiteneffekt zeigt, dürfte das die beste Lösung sein.
Und schon wieder etwas gefunden: Die Popups in TDlgScripts werden
irgendwo anders aufgebaut, so daß sie von TranslateAll nicht bearbeitet
werden. Sie erzeugen keinen Eintrag in der hamster_xx.dat, über die sie
eine Hilfe-Nummer bekommen könnten. Außerdem ignorieren sie komplett die
Spracheinstellungen des Hamster und sind auf meinem deutssprachigem
Windows immer in deutsch.
* CtxtMenu.png Size: 16,2 KB

<https://app.box.com/s/tn8qphndmql86t4p0un2pxyv1m7zfdfr>


"Rechts-nach-Links-Lesefolge"!? könnte es sein, dass das garkeine
Hamster-Menüs sind?

XP und #10 sehen auch unterschiedlich bestückt.

Alfred
--
22407.9
Heiko Rost
2022-05-29 19:51:16 UTC
Permalink
Post by Alfred Peters
* CtxtMenu.png Size: 16,2 KB
<https://app.box.com/s/tn8qphndmql86t4p0un2pxyv1m7zfdfr>
"Rechts-nach-Links-Lesefolge"!? könnte es sein, dass das garkeine
Hamster-Menüs sind?
Davon gehe ich inzwischen auch aus, und neige deshalb dazu, sich auf das
wahrscheinlich ohne größere Änderungen funktionierende zu konzentrieren:

- Die Änderung einbauen, daß bei den vom Hamster generierten Popups die
Separatoren bei F1 die Hilfeseite des Formulars aufrufen.

- Falls es wirklich ausreicht, im Hauptmenü den Shortcut F1 für den
"Hilfe"-"Inhalte" - Menüpunkt zu löschen, damit die beiden
problematisch Dialogfenster sich wie gewünscht verhalten und es keine
anderen Fehler produziert, diesen Shortcut aus dem Menü entfernen.

Gruß Heiko
--
Der Wille, gesund zu werden, ist stärker als der Wille, gesund zu bleiben.
Gerhard Kocher
Alfred Peters
2022-05-29 20:02:54 UTC
Permalink
Post by Heiko Rost
Post by Alfred Peters
"Rechts-nach-Links-Lesefolge"!? könnte es sein, dass das garkeine
Hamster-Menüs sind?
Davon gehe ich inzwischen auch aus, und neige deshalb dazu, sich auf das
[X] Dafür
Post by Heiko Rost
- Die Änderung einbauen, daß bei den vom Hamster generierten Popups die
Separatoren bei F1 die Hilfeseite des Formulars aufrufen.
- Falls es wirklich ausreicht, im Hauptmenü den Shortcut F1 für den
"Hilfe"-"Inhalte" - Menüpunkt zu löschen, damit die beiden
problematisch Dialogfenster sich wie gewünscht verhalten und es keine
anderen Fehler produziert, diesen Shortcut aus dem Menü entfernen.
Beides drin:

* Hamster_2101546.zip Size: 1,1 MB
<https://app.box.com/s/qjhjn69gt9lqcyed6b71np7wc0jv1q6k>

Alfred
--
22407.9
Heiko Rost
2022-05-30 07:26:05 UTC
Permalink
Post by Alfred Peters
* Hamster_2101546.zip Size: 1,1 MB
<https://app.box.com/s/qjhjn69gt9lqcyed6b71np7wc0jv1q6k>
Danke, beim ersten Test keine Probleme gefunden.

Gruß Heiko
--
Wie seltsam ist doch unsere Seele konstruiert
und an wie dünnen Fäden hängt Glück oder Verderben
Mary Shelly
Chris
2022-06-08 10:07:00 UTC
Permalink
Post by Alfred Peters
* Hamster_2101546.zip Size: 1,1 MB
Herzlichen Dank an Dich und Heiko.
Nun ist das Hamster-Installationsarchiv auf
<https://hamsterclassic.github.io/hamster-classic> (Sichere und
komfortable Hamster-Installation) auch wieder auf dem neuesten Stand,
d.h. mit der HTML-Hilfe. Einstellungen einer vorhandenen hamster.ini
werden bei der Installation nicht überschrieben, müssen bei Bedarf nur
samt den anderen Daten in das neue Datenverzeichnis kopiert werden, wenn
vorher Programm und Daten nicht getrennt waren.

In der Hamster-Hilfe wird mal geduzt, mal gesiezt - sollte man sich da
evtl. auf eine einheitliche Form einigen?

Unschön finde ich, dass Hamster die Hilfe aus dem Datenverzeichnis läd,
d.h. dem Verzeichnis aus Directories/Main in Hamster.ini. Ich möchte
anregen, die Hilfe im Verzeichnis der hamster.exe zu suchen. Hat man
Hamster sinnvollerweise im Windows-Programmverzeichnis installiert, wird
durch die Standard-Zugriffsrechte gewährleistet, daß eingeschränkte
Nutzer sie nicht überschreiben und Schindluder treiben können.

Viele Grüße,
Chris
Heiko Rost
2022-06-08 11:06:46 UTC
Permalink
Post by Chris
In der Hamster-Hilfe wird mal geduzt, mal gesiezt - sollte man sich da
evtl. auf eine einheitliche Form einigen?
Und manchmal wird auch unpersönlich gesprochen, was letztendlich an den
verschiedenen Bearbeitern und Zeitpunkten des Verfassens der einzelnen
Seite liegt. Ich versuche, bei Änderungen innerhalb einer Seite den Stil
beizubehalten, alles komplett gleich zu machen, ist für mich zu
aufwendig.
Post by Chris
Unschön finde ich, dass Hamster die Hilfe aus dem Datenverzeichnis läd,
d.h. dem Verzeichnis aus Directories/Main in Hamster.ini. Ich möchte
anregen, die Hilfe im Verzeichnis der hamster.exe zu suchen.
Das macht der Hamster, und den Grund, warum das bei Deinem
Installationsskript nicht passiert, hatten wir IIRC auch schon
besprochen. Du benutzt (zumindest als ich mir daS Skript zuletzt
angeschaut hatte) den Eintrag

[Directories]
Main=<pfadname>

in der Hamster.ini. Dieser verschiebt aber nicht nur das
Datenverzeichnis, sondern alles mit Ausnahme der hamster.exe nach
<pfadname>. In der Hilfe ist das auch so erklärt:

| Diese Angabe ist nur dann interessant, wenn man z.B. als Entwickler mehrere
| „Hamster.exe“ auf die gleiche Datenbasis zugreifen lassen möchte, für Anwender
| ist die Einstellung nicht sinnvoll nutzbar

Eine hamsterseitige Änderung dieses Verhaltens halte ich für ungünstig,
weil das eine dokumentierte Funktion ist, die genau das macht, was sie
soll.

Mit den anderen Einträgen unter [Directories] wirst Du
höchstwahrscheinlich auch keinen Erfolg haben, so etwas wie ein
Datenverzeichnis zu definieren. Mindestens die Sprachdatei
(hamster_xx.dat) kann damit nicht verschoben werden, und in diese
schreibt der Hamster unter bestimmten Umständen.

Gruß Heiko
--
So mancher meint, ein gutes Herz zu haben, und hat nur schwache Nerven.
Marie Freifrau von Ebner-Eschenbach
Chris
2022-06-09 11:34:00 UTC
Permalink
Post by Heiko Rost
Post by Chris
In der Hamster-Hilfe wird mal geduzt, mal gesiezt - sollte man
sich da evtl. auf eine einheitliche Form einigen?
Ich versuche, bei Änderungen innerhalb einer
Seite den Stil beizubehalten, alles komplett gleich zu machen, ist
für mich zu aufwendig.
Das wird natürlich keiner erwarten. Du hast Dir ja schon genug Arbeit
damit gemacht, die Hilfe überhaupt wieder einfach benutzbar zu machen.
Vielleicht aber mit Community-Hilfe - es ist ja "nur" eine Fleißaufgabe.
Und zumindest für Ergänzungen der Hilfe könnten wir uns hier auf Du oder
Sie einigen.
Post by Heiko Rost
Post by Chris
Ich möchte anregen, die Hilfe im Verzeichnis der hamster.exe zu
suchen.
[Directories]
Main=<pfadname>
in der Hamster.ini. Dieser verschiebt aber nicht nur das
Datenverzeichnis, sondern alles mit Ausnahme der hamster.exe nach
Genau. Dabei fällt mir gerade auf, dass diese ehemals enthaltene Passage:

| Mit dieser Angabe kann man die Programmdatei getrennt von der
| Konfiguration und den Daten auf dem Rechner ablegen,

aus der aktuellen Hilfe merkwürdigerweise verschwunden ist. Offenbar
zugunsten der m.E. kontraproduktiven Erklärung "Seit Windows Vista wird
dringend geraten, den Hamsterordner außerhalb von %Programfiles%
anzulegen...". Gerade das ist aber für ausführbare Dateien der einzig
richtige Ort, wenn man nicht fehlerträchtig selbst an den Zugriffsrechten
herumbasteln will, um die gleiche Sicherheit zu erreichen.
Post by Heiko Rost
für Anwender | ist die Einstellung nicht sinnvoll nutzbar
Das sehe ich anders. Trennung von Programm und Daten (sowie
eingeschränkte Rechte für Nicht-Administratoren) ist gerade für Anwender
als Sicherheitsfeature sinnvoll. Stichwort "write or execute".

Das ist doch eigentlich heute unter sicherheitsbewußten Fachleuten
unumstritten und gehört wohl auch seit $ewig zu den "Designed for
Windows"-Richtlinien. Ich habe auch lange an der liebgewonnenen Praxis
festgehalten, Programm und Daten kompakt in einem Ordner abzulegen, aber
die Gegenargumente sind überzeugend.
Post by Heiko Rost
Mit den anderen Einträgen unter [Directories] wirst Du
höchstwahrscheinlich auch keinen Erfolg haben, so etwas wie ein
Datenverzeichnis zu definieren.
So wie es derzeit machbar ist bzw. von meinem Script automatisch
eingerichtet wird, paßt ja auch alles - bis auf die Hilfedatei.

Viele Grüße
Chris
Heiko Rost
2022-06-09 14:18:11 UTC
Permalink
Post by Chris
| Mit dieser Angabe kann man die Programmdatei getrennt von der
| Konfiguration und den Daten auf dem Rechner ablegen,
aus der aktuellen Hilfe merkwürdigerweise verschwunden ist. Offenbar
zugunsten der m.E. kontraproduktiven Erklärung "Seit Windows Vista wird
dringend geraten, den Hamsterordner außerhalb von %Programfiles%
anzulegen...".
Wo stand das? Den Satz "Seit Windows Vista..." finde ich bereits in der
hlp-Version, die Änderung dürfte also schon länger her sein.
Post by Chris
Gerade das ist aber für ausführbare Dateien der einzig
richtige Ort, wenn man nicht fehlerträchtig selbst an den Zugriffsrechten
herumbasteln will, um die gleiche Sicherheit zu erreichen.
Post by Heiko Rost
für Anwender | ist die Einstellung nicht sinnvoll nutzbar
Das sehe ich anders. Trennung von Programm und Daten (sowie
eingeschränkte Rechte für Nicht-Administratoren) ist gerade für Anwender
als Sicherheitsfeature sinnvoll. Stichwort "write or execute".
Die Trennung von Programm und Daten halte ich auch für sinnvoll. Nur ist
das derzeit nicht möglich, weil der Hamster so etwas wie ein
Datenverzeichnis nicht kennt und man es auch nicht per Konfiguration
erzeugen kann. Das von Dir benutzte Main= schafft das nicht, weil es
einen anderen Zweck hat und deshalb das Gewünschte nur schlecht macht.
Post by Chris
...
So wie es derzeit machbar ist bzw. von meinem Script automatisch
eingerichtet wird, paßt ja auch alles - bis auf die Hilfedatei.
Es ist nicht nur die Hilfedatei. Das würde (falls ich nichts vergessen
habe) auch noch.

- die ham.exe
- die SSL.Bibliotheken
- die Zeiichensatzkonvertierungstabellen (*.cnv)
- die Sprachdateien (hamster_xx.dat)

betreffen. Wobei die Sprachdateien das größte Problem sein dürften, weil
diese vom Hamster automatisch mit Einträgen gefüllt werden können, wenn
er etwas übersetzen will, was darin noch nicht enthalten ist. Wenn man
die im Programmverzecihnis ablegt, darf der Hamster nicht schreiben. Und
im Datenverzeichnis gibt es das Problem, daß der Nutzer dann
höchstwahrscheinlich vergißt, bei einem Update diese Dateien zu
ersetzen.

Gruß Heiko
--
So mancher meint, ein gutes Herz zu haben, und hat nur schwache Nerven.
Marie Freifrau von Ebner-Eschenbach
Chris
2022-06-10 17:31:00 UTC
Permalink
Post by Heiko Rost
Post by Chris
| Mit dieser Angabe kann man die Programmdatei getrennt von der
| Konfiguration und den Daten auf dem Rechner ablegen,
Wo stand das?
In der hier vorhandenen Hilfedatei von 2014.
Post by Heiko Rost
Den Satz "Seit Windows Vista..." finde ich bereits in
der hlp-Version, die Änderung dürfte also schon länger her sein.
Steht hier auch drin, nur anders formuliert/unauffälliger, deswegen war
mir das erst jetzt in der chm-Version aufgefallen.
Post by Heiko Rost
Nur ist das derzeit nicht möglich, weil der Hamster so etwas wie
ein Datenverzeichnis nicht kennt
Doch :-)
Post by Heiko Rost
und man es auch nicht per
Konfiguration erzeugen kann. Das von Dir benutzte Main= schafft das
nicht, weil es einen anderen Zweck hat und deshalb das Gewünschte
nur schlecht macht.
Hier funktioniert alles bestens, selbstverständlich incl. OpenSSL. Die
Sprachdatei liegt im Datenverzeichnis gut und kann dort modifiziert
werden bzw. wird vom Script automatisch aktualisiert. Probiere die
Installation doch ruhig mal in einem unverbastelten Windows aus.

Für CHM-Dateien mit Schadcode gibt es reale Beispiele. Mit den anderen
Hamster-Dateien kann man durch böswillige Änderungen vermutlich auch
Schaden anrichten - das herauszufinden wäre eine Aufgabe für
Sicherheitsforscher. An meinem Vorschlag kann ich neben dem Vorteil bzgl.
Sicherheit jedenfalls keine Nachteile entdecken, bei minimalem
Änderungsaufwand.

Viele Grüße
Chris
--
Sichere und komfortable Hamster-Installation:
https://hamsterclassic.github.io/hamster-classic
Heiko Rost
2022-06-10 19:15:07 UTC
Permalink
Post by Chris
Post by Heiko Rost
Post by Chris
| Mit dieser Angabe kann man die Programmdatei getrennt von der
| Konfiguration und den Daten auf dem Rechner ablegen,
Wo stand das?
In der hier vorhandenen Hilfedatei von 2014.
Oops, diese kannte ich nicht. Für die chm-Hilfe habe ich als
Ausgangsbasis die von Steffen Hoffmann aus 2011 genommen.
Post by Chris
Hier funktioniert alles bestens, selbstverständlich incl. OpenSSL.
Die mitinstallierte openssl.exe läßt sich nicht starten, weil es die
wegen des Hamsters umbenannte ssleay32.dll nicht findet. Falls es bei
Dir funktioniert, ist die Datei vielleicht irgendwo in %path% zu finden.
Post by Chris
Die
Sprachdatei liegt im Datenverzeichnis gut und kann dort modifiziert
werden bzw. wird vom Script automatisch aktualisiert. Probiere die
Installation doch ruhig mal in einem unverbastelten Windows aus.
Ok, sieht besser aus als ich es in Erinnerung hatte. Was ich in der
Installation nicht gefunden habe, ist die ham.exe.

Gruß Heiko
--
Der Mensch ist gut, nur die Nerven sind schlecht.
Mose Ya'aqob Ben-Gavriêl
Alfred Peters
2022-06-11 13:31:58 UTC
Permalink
Post by Heiko Rost
Post by Chris
| Mit dieser Angabe kann man die Programmdatei getrennt von der
| Konfiguration und den Daten auf dem Rechner ablegen,
aus der aktuellen Hilfe merkwürdigerweise verschwunden ist. Offenbar
zugunsten der m.E. kontraproduktiven Erklärung "Seit Windows Vista wird
dringend geraten, den Hamsterordner außerhalb von %Programfiles%
anzulegen...".
Wo stand das? Den Satz "Seit Windows Vista..." finde ich bereits in der
hlp-Version, die Änderung dürfte also schon länger her sein.
Steht leider auch so in der PDF-Hilfe.

Der Auslöser für die Änderung dürfte hier liegen:

### <***@ID-4636.user.dfncis.de> ist 4122 Tage alt:
# Subject: Re: FAQ: Hamster & Windows Vista/7?
# From: Wolfgang Jäth <***@goldmail.de>
# Newsgroups: hamster.de.misc
# Date: Sun, 27 Feb 2011 08:18:06 +0100
| Also /ich/ kenne keine; daß man den Hamster nicht in das
| Programme-Verzeichnis installieren sollte, ist seit IIRC mindestens Win
| 2000 ein uralter Hut, also nix spezielles für Win 7; daß man den

In der PDF-Hilfe wurde dafür der entsprechende Eintrag in der
"Hamster.ini - [Directories]" schon mal erweitert. Siehe auch:

### <hdm-33146211.20111030$***@virsperans.my-fqdn.de> ist 3878 Tage alt:
# Subject: Re: Hamster und Win7 64bit
# From: Steffen Hoffmann <speraviro-***@expires-2011-10-31.arcornews.de>
# Newsgroups: hamster.de.misc
# Date: Sun, 30 Oct 2011 01:21:44 +0200

| [Directories]
| ; Dieser Abschnitt erlaubt die freie Konfiguration des Hamster-Verzeichnisbaumes.
| ; Änderungen können ggf. die Funktionalität älterer Zusatzprogramme oder Skripte
| ; beeinträchtigen.
| ; Mit dieser Angabe kann man die Programmdatei getrennt von der Konfiguration und den
| ; Daten auf dem Rechner ablegen, oder man kann zu Testzwecken als Entwickler o. ä.
| ; eine »hamster.exe« auf die komplette Installation eines bereits an anderer Stelle
| ; installierten Hamsters zugreifen lassen und so dessen Daten und sonstige Dateien
| ; (Hilfedatei, Skripte, *.cnv, *.hst usw.) nutzen.
| ; In demselben Verzeichnis wie die »hamster.exe« muss dann eine »hamster.ini« abgelegt
| ; werden, die außer dem Sektionsbezeichner »[Directories]« ausschließlich den folgen-
| ; den Eintrag besitzt.
| Main=⟨Pfad zu Konfigurationsdateien und Daten⟩

Alfred
--
22442.8
Heiko Rost
2022-06-11 21:07:04 UTC
Permalink
Post by Alfred Peters
Post by Heiko Rost
Wo stand das? Den Satz "Seit Windows Vista..." finde ich bereits in der
hlp-Version, die Änderung dürfte also schon länger her sein.
Steht leider auch so in der PDF-Hilfe.
Und auch in der Hilfeversion von 2014. Ein erster flüchtiger Vergleich
mit der von mir zur Umwandlung benutzten 2011er hat eine Reihe kleiner
Korrekturen (Rechtschreibfehler, bessere Formulierungen), aber auch
komplett neue Inhalte zu Tage gefördert. Jetzt heißt es also erstmal,
den Vergleich gründlicher durchzuführen und ggf. die Änderungen
einzuarbeiten.

Gruß Heiko
--
Keine Unterwerfung ist so vollkommen wie die, die den Anschein der Freiheit
wahrt. Damit lässt sich selbst der Wille gefangen nehmen.
Jean-Jacques Rousseau
Loading...