home *** CD-ROM | disk | FTP | other *** search
- Sorry for this: The CHANGES.TXT are written in German. I haven't any time to
- translate. See the comments inside the source files, they are written in
- English.
-
- 20. Februar 1994 / 8. April 1994 / 18. August 1994
-
- Änderungen am E_EDIT. Thomas K. Götz
-
- 1. Grundsätzliche Schwächen
-
- Der Editor E_EDIT hat einige kleine Schwächen, die einen behindern, wenn
- man mit ihm arbeitet:
-
- - Keine Anzeige, ob die geladene Datei seit dem letzten Speichern geändert
- wurde. Ein kleiner Stern links neben "Line" könnte für eine solche
- Anzeige gebraucht werden.
- - Keine langen Dateinamen. (Problem der Dialogboxen "Open" und "SaveAs")
- - Maximal 64K große Dateien können gelesen werden.
- - 16bittiger Code.
-
-
- 2. Die Portierung
-
- Um dies auszubessern habe ich den E_EDIT auf den EMX-GCC Compiler (Version 0.8h)
- portiert. Dabei ist zwangsläufig 32-bittiger Code enstanden. Für die Portierung
- waren folgende Änderungen nötig, ohne, daß sich grundlegend etwas geändert hat:
- - Die Dialogboxen, die benötigt wurden, um Dateien zu laden (Öffnen)
- und um sie unter einem anderen Namen zu speichern (Speichern als)
- brachten in der 32-bittigen Version den PM zu Absturz. Es war keine
- Benutzereingabe mehr möglich. Deshalb wurden die Dialogboxen durch den
- Standard-File-Dialog ersetzt. In der Datei EDIT.C gab es dafür in der
- Funktion "ClientWndProc" einige Änderungen (WM_COMMAND.IDM_OPEN und
- WM_COMMAND.IDM_SAVEAS). In EDLG.C wurden eine Reihe von Funktionen
- (z.B. OpenDlgProc und SaveasDlgProc) schlicht gestrichen.
- - Eine Menge von Variablen und Parameter mußten von USHORT auf ULONG
- umdefiniert werden. Die entsprechenden Stellen habe ich mit meinen
- Initialen "tkg" gekennzeichnet.
- - Eine Reihe weiterer kleiner Änderungen, die ich ebenfalls mit
- "tkg" gekennzeichnet habe
- - Die Such-Operationen funktionierten nicht.
- Egal was gesucht wurde, nichts war aufzufinden. Nachdem anstelle des
- OS2EMX.H-Headers die Header des IBM-Toolkits benutzt wurden, war dieses
- Problem beseitigt. (Offensichtlich ein Fehler in dem Header OS2EMX.H)
- Dafür mußte die Datei OS2.H aus dem EMX-INCLUDE-Verzeichnis geändert werden
- und die Environment-Variable C_INCLUDE_PATH entsprechend gesetzt werden.
- - Probleme mit den Hot-Keys (s.u)
-
- 3. Die Dialogboxen bzw. lange Dateinamen
-
- Die Dialogboxen "Open" und "SaveAs" wurden entfernt (s. 2., erster
- Spiegelstrich). Damit hat sich auch das Problem mit den langen Dateinamen
- erledigt, denn dies war ein Problem dieser beiden Dialog-Boxen. Auch Dateien
- mit langen Namen sind lad- und speicherbar.
- Damit die OS/2-Dialogboxen "Open" und "SaveAs" arbeiten, muß ihnen ein
- Laufwerksbuchstabe übergeben werden. Dieser wird in der globalen Variable
- "drive" gespeichert. Nach einem erfolgreichen Open bzw. SaveAs wird
- der Laufwerksbuchstabe aus dem Dateinamen in diese Variable übernommen.
- Dies ist nötig, wenn der Benutzer einen Laufwerkwechsel vorgenommen hat,
- damit im nächsten Dialog mit diesen Boxen das geänderte Laufwerk
- angezeigt wird. All dies geschieht in der ClientWndProc unter
- WM_COMMAND.IDM_OPEN bzw. .IDM_SAVEAS und WM_ARGS. (Unter WM_ARGS wird die
- Datei geöffnet, die als Parameter übergeben wurde).
- Initialisiert wird die Variable "drive" in der Funktion "main" mit dem
- aktuellen Laufwerk. Leider stehen die Dialogboxen dann nicht immer im
- erwarteten Pfad.
- Ein Experiment:
- - In einem Befehlszeilenfenster werden folgende Kommandos eingegeben:
- (Ich unterstelle, daß die genannten Laufwerke und Verzeichnisse existieren.
- Es funktioniert auch mit anderen.)
- - e:
- - cd c:\texfonts
- - cd \user
- - start edit32
- - In dem gestarteten Editor wird die Open-Box benutzt: (File--Open)
- (File--Open: Kommando aus der Menüleiste des Editors. Restliche Kommandos
- sind in der Box zu finden.)
- lfd. Nr. Kommando angezeigtes Laufwerk angezeigter Pfad
- --------------------------------------------------------------------------
- 1. File--Open E: \user
- 2. lw-Wechsel nach C: C: \
- 3. Selektiere AUTOEXEC.BAT C: \
- 4. Öffne mit OK - -
- 5. File-Open C: \texfonts
-
- Das Ergebnis dieses Experiments ist unerwartet, deshalb muß der Pfad nach "Open" bzw.
- "SaveAs" mit DosSetCurrentDir gesetzt werden. Jetzt ergibt das obige Experiment das
- erwartete Ergebnis:
- lfd. Nr. Kommando angezeigtes Laufwerk angezeigter Pfad
- --------------------------------------------------------------------------
- 5. File-Open C: \
-
- 4. Das Sternchen bzw. "Schon gespeichert?"
-
- Um das Sternchen zu erzeugen, welches anzeigt, ob die Datei nach dem
- Laden bzw. letzten Speichern geändert wurde, waren in "ClientWndProc"
- eine Reihe von Änderungen nötig. Es wurde eine Variable "needToSaveOld"
- eingeführt, die bei der Message "WM_TIME" abgefragt und ggf. neu gesetzt
- wird. Das Sternchen selbst wird wie die Angabe der Zeilen und Spaltennummer
- bei WM_PAINT entweder gezeigt oder gelöscht. Unter WM_TIME wird ggf.
- ein WM_PAINT erzwungen.
-
- 6. Hot-Keys
-
- Die Hot-Keys mit Control-Taste mit Buchstaben funktionieren nicht
- (CTRL-G, CTRL-F, CTRL-R), wohl aber die Funktionstasten (F3) und andere
- Kombinationen (Shift-Ins, Shift-Entf, CTRL-Ins, ALT-BS).
- Lösung: In der AccelTable in der Datei "edit.rc", ab Zeile 44, waren die Tasten
- "^F", "^R" und "^G" als Kommandos angegeben. Es muß heißen: "^f", "^r" und "^g".
- Wer hätte das gedacht.
-
- Weitere Hot-Keys für New "^n", Open "^o", Save "^s" und Save As "^a" eingeführt.
-
- 7. Übersetzung mit dem IBM-Compiler
- Da ich jetzt auch den IBM C/C++ First Step besitze, habe ich den Editor
- auch mit diesem Compiler übersetzt und den Editor getestet. Es funktioniert
- gut. Da mit dieser Variante das Source-Code-Debuggen mit dem IBM-IPDM
- funktioniert, wird in Zukunft auf diesem Compiler entwickelt und die
- Übersetzbarkeit mit dem EMX-GCC nur gelengentlich überprüft.
-
- 8. Dateien über 64 KByte
- Unter OS/2 2.x sollte es kein Problem bereiten, Dateien über 64 KByte
- zu laden. Leider kann MLM_IMPORT offensichtlich keine Datenmengen
- über 64 KByte bewältigen, so daß MLM_IMPORT mehrmals mit 64 KByte-Happen
- aufgerufen werden muß. Zuvor muß allerdings mit MLM_SETTEXTLIMIT das
- MLE-Maximum entsprechend erhöht worden sein. Leider überträgt MLM_IMPORT
- immer nur ganze Zeichen bzw. vollständige Zeichenkombinationen. Wird
- nur das "CR" von "CR LF" als letztes Zeichen übertragen muß entsprechend
- reagiert werden. Wegen dieses Problems und ähnlicher Problem bei
- MLM_EXPORT und MLM_QUERYTEXTLENGTH bzw. MLM_DELETE (PM hing) habe
- ich dieses Vorhaben aufgegeben.
-
- 9. Zusammenfassen von Quellcode:
- Der Editor enthält Funktionalität doppelt, z.B. "OPEN" bei WM_ARGS und
- WM_COMMAND.IDM_OPEN. Dieses wurde zusammengefaßt und in Prozeduren
- gesteckt.
-
- 10. Verschiedene Sprachen
- Meldungen an die Benutzenden waren über die gesamte Datei "edit.c"
- verteilt. Sie wurden in einer Reihe von Konstanten zusammengefaßt.
- Per Sprachselektor "English" bzw. "Deutsch" kann die Sprache
- ausgewählt werden. Möchte jemand die Meldungen in einer anderen
- Sprache haben, so ist er aufgefordert in gleicher Art die Meldungen
- zu übersetzen, einen weiteren Selektor hinzuzufügen und "edit32.exe"
- neu zu erzeugen. Dabei sollten die Meldungen in den vorhanden Sprachen
- nicht gelöscht werden.
-
- 11. Öffnen einer neuen Datei
- Der Editor-Inhalt wird nicht mehr vor dem Öffnen-Dialog gelöscht, sondern
- danach. Im Fall des Abbruchs im Öffnen-Dialog bleibt der alte Inhalt.
- Die Möglichkeit des Sicherns ist damit auch nach dem Öffnen-Dialog.
-