home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 5 Edit
/
05-Edit.zip
/
ed32eng1.zip
/
source
/
CHANGES.TXT
next >
Wrap
Text File
|
1994-09-22
|
8KB
|
151 lines
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.