home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / turbo5 / doc / helpme.doc < prev    next >
Text File  |  1988-10-09  |  25KB  |  547 lines

  1.        ALLGEMEINE FRAGEN UND ANTWORTEN ZU TURBO PASCAL 5.0
  2.        ---------------------------------------------------
  3.  
  4.  
  5.    1. Ist die Größe des Programmcodes und der Daten in irgendeiner
  6.       Form begrenzt (wie in der Version 3.0)?
  7.  
  8.       Jedes Modul eines Programms (d.h. jedes Unit und das
  9.       Hauptprogramm) arbeitet mit einem (konstanten) Code-Segment
  10.       und kann deshalb maximal 64 KByte umfassen. Die Gesamtgröße
  11.       eines Programms ist nur durch den verfügbaren Hauptspeicher
  12.       begrenzt (max. 640 KByte).
  13.         Alle globalen Variablen und Konstanten eines Programms werden
  14.       in einem Daten-Segment gespeichert und sind nach wie vor auf
  15.       64 KByte beschränkt.
  16.         Der Heap hat (wie in der Version 3.0) keine Größenbe-
  17.       schränkung. Die entsprechenden Verwaltungsroutinen arbeiten
  18.       wesentlich schneller und effizienter (minimale Blockgröße der
  19.       Version 3.0: 8 Bytes, in der Version 5.0: 1 Byte). Zusätzlich
  20.       läßt sich eine Fehlerbehandlungsroutine installieren, die
  21.       automatisch aufgerufen wird, wenn New oder GetMem der
  22.       Speicherplatz ausgeht.
  23.  
  24.  
  25.    2. Ist Turbo Pascal auf MS-DOS-Maschinen lauffähig, die nicht
  26.       direkt "kompatibel" sind?
  27.  
  28.       Die Kommandozeilen-Version des Compilers (TPC.EXE) macht überhaupt
  29.       keinen Gebrauch von PC-spezifischen Eigenschaften, wenn sie mit dem
  30.       Zusatzparameter /Q aufgerufen wird; die Routinen der Units System,
  31.       Dos und Printer sollten auf allen DOS-Maschinen lauffähig sein.
  32.         Mit Turbo Pascal erzeugte .EXE-Dateien sind deshalb 100%ig DOS-
  33.       kompatibel, solange nicht ein oder mehrere der PC-spezifischen
  34.       Units (Crt, Graph und Graph3) verwendet werden. Die Software-
  35.       Fließkommafunktionen und der Emulator sind auf jeder DOS-Maschine 
  36.       verwendbar; die 8087-Bibliothek (Modus {$N+,E-}) setzt voraus, 
  37.       daß ein entsprechender Coprozessor installiert ist, der hardware-
  38.       mäßig in derselben Weise angesteuert wird wie bei einem Computer 
  39.       der PC-Serie.
  40.  
  41.    3. Unterstützt die Version 5.0 verschieden große Integerwerte?
  42.  
  43.       Sie tut es - und zwar in jeder denkbaren Form vordefinierter
  44.       Integertypen mit 8 Bit (ShortInt, Byte), 16 Bit (Integer, Word) 
  45.       und 32 Bit (LongInt).
  46.  
  47.  
  48.    4. Kann man die 4.0-Toolboxen mit 5.0 verwenden?
  49.  
  50.       Ja. Alles, was sich hier geändert hat, sind zwei Compiler-Schal-
  51.       ter: {$T} ("TPM-Datei erzeugen") existiert nicht mehr; {$A} (für
  52.       byte- bzw. wortweise Anordnung von Variablen im Speicher) ist neu
  53.       dazugekommen. Die Datei README beschreibt detailliert, in welchem
  54.       Toolbox-Quelltext welche Zeile zu ändern ist - und die Liste für
  55.       sämtliche Toolboxen ist gerade eine viertel Seite lang.
  56.  
  57.  
  58.    5. Läßt sich die Compilierung von Programmteilen von Bedingungen
  59.       abhängig machen (wie in Turbo C)?
  60.  
  61.       Ja - wobei nicht nur die Definition von Symbolen (mit {$DEFINE} und
  62.       {$UNDEF}) und Prüfungen (mit {$IFDEF..$ELSE..$ENDIF}) möglich sind,
  63.       sondern auch Tests von Compiler-Schaltern. Damit lassen sich
  64.       beispielsweise Real-Datentypen abhängig davon definieren, ob der
  65.       Computer mit einem numerischen Coprozessor ausgerüstet ist oder
  66.       nicht. 
  67.         Zusätzlich lassen sich Symbole zur bedingten Compilierung auch
  68.       direkt beim Aufruf des Compilers (d.h. ohne Veränderung des
  69.       Quelltextes) definieren.
  70.  
  71.  
  72.    6. Wieviel Platz im Daten-Segment belegt das System, wieviel ist
  73.       tatsächlich für das Programm verfügbar?
  74.  
  75.       Der Platzbedarf der Laufzeitbibliothek im Daten-Segment des
  76.       Programms hängt davon ab, welche Units aufgenommen werden:
  77.  
  78.              UNIT         Datengröße (in Bytes)
  79.              ----         ---------------------
  80.              SYSTEM               664
  81.              OVERLAY               10
  82.              DOS                    6
  83.              CRT                   20
  84.              PRINTER              256
  85.              GRAPH               1070
  86.              TURBO3               256
  87.              GRAPH3                 0
  88.                                =========
  89.                                  2282
  90.  
  91.       Die Gesamtgröße des Daten-Segments beträgt 65520 Bytes. Einem
  92.       Programm, das nur das Unit System verwendet, stehen also
  93.  
  94.                 65520 - 664 = 64856 Bytes
  95.  
  96.       für globale Variablen und Konstanten zur Verfügung.
  97.  
  98.  
  99.    7. Welche Größe kann eine Datenstruktur maximal haben?
  100.  
  101.       Ein Aufruf von GetMem oder New kann maximal 65521 Bytes auf dem
  102.       Heap belegen. Diese Grenze gilt im Prinzip auch für die Deklara-
  103.       tion statischer (globaler) Variablen.
  104.  
  105.  
  106.    8. Läßt sich feststellen, wieviel Bytes Code und wieviele Bytes
  107.       Daten die Compilierung eines Programms oder Units erzeugt?
  108.  
  109.       Innerhalb der integrierten Entwicklungsumgebung compilieren Sie das
  110.       entsprechende Modul und wählen dann "Get info" aus dem Menü
  111.       Compile.
  112.         Die Kommandozeilen-Version von Turbo Pascal gibt die ent-
  113.       sprechenden Daten automatisch am Ende einer Compilierung aus.
  114.  
  115.  
  116.    9. Wie sieht es mit der Kompatibilität zwischen Turbo Pascal 5.0
  117.       und .OBJ-Dateien aus, die mit Turbo C oder dem Turbo Assembler
  118.       erzeugt worden sind?
  119.  
  120.       Mit Turbo C oder Turbo Assembler erzeugte .OBJ-Dateien können
  121.       über den Compiler-Befehl {$L} in ein Pascal-Programm
  122.       aufgenommen werden (siehe CPASDEMO.C und CPASDEMO.PAS auf der
  123.       Diskette II). Turbo Pascal selbst erzeugt keine Object-, sondern
  124.       .TPU-Dateien (wobei das Suffix TPU für "Turbo Pascal Unit" steht)
  125.  
  126.       Dafür gibt es mehere Gründe:
  127.  
  128.       - .TPU-Dateien enthalten neben dem Object-Code Informationen für
  129.         die Fehlersuche und die strenge Typ-Prüfung von Pascal bei der
  130.         Einbindung in ein Programm. Trotzdem sind sie wesentlich kleiner
  131.         als .OBJ-Dateien.
  132.       - .TPU-Dateien erlauben ein "intelligentes" Binden - nicht benutzte
  133.         Code- und Datenbereiche werden vom Linker automatisch entfernt.
  134.       - Das .TPU-Format ist wesentlich einfacher zu bearbeiten und einer
  135.         der Gründe für die hohe Geschwindigkeit des Compilers (bis
  136.         zu 34000 Zeilen pro Minute auf einem PS/2 Modell 60).
  137.  
  138.  
  139.   10. Lassen sich mit {$L} auch Dateien einbinden, die mit anderen
  140.       Compilern erzeugt wurden (FORTRAN etc.)?
  141.  
  142.       Das hängt vom Compiler bzw. der Programmiersprache ab. Turbo Pascal
  143.       erwartet den gesamten Programmcode einer .OBJ-Datei in *einem*
  144.       Segment mit dem Namen CODE, sämtliche Daten müssen ebenfalls in
  145.       einem Segment (mit dem Namen DATA) gespeichert sein.
  146.         Wenn Sie Maschinenprogramme mit einem Assembler schreiben, 
  147.       lassen sich diese Bedingungen recht einfach erfüllen - anders
  148.       sieht es dagegen mit einem Hochsprachen-Compiler aus, der in den
  149.       meisten Fällen mit mehreren Segmenten für Code und Daten arbeiten
  150.       wird. (Allerdings: Auch Turbo C arbeitet mit einer größeren
  151.       Zahl von Segmenten - und mit dem Beispielprogramm CPASDEMO.C
  152.       (auf der Diskette 3) haben wir bewiesen, daß die Sache so schwie-
  153.       rig nicht ist).
  154.  
  155.  
  156.   11. Der Linker arbeitet "intelligent" und entfernt unbenutzten Code. 
  157.       Wie sieht es mit unbenutzten Datendeklarationen aus?
  158.  
  159.       Unbenutzte Datendeklarationen wurden in der Version 4.0 noch 
  160.       mitgeschleppt - in der Version 5.0 analyisert der Linker dagegen
  161.       einzelne *Deklarationsabschnitte* und entfernt sie gegebenenfalls.
  162.       (Im Kapitel 8 des Addendums finden Sie eine detaillierte Beschrei-
  163.       bung des Wie und Wo).
  164.  
  165.  
  166.    12. Wenn ein Unit in zwei Modulen eines Programm mit uses angeführt
  167.        ist, wird es dann auch doppelt in die .EXE-Datei aufgenommen?
  168.  
  169.        Nein. Unabhängig davon, wie komplex die gegenseitigen Abhängig-
  170.        keiten einzelner Units und Programmteile aussehen, nimmt Turbo 
  171.        Pascal von jeder benötigten Prozedur oder Funktion exakt EINE
  172.        Kopie in die .EXE-Datei auf - nicht mehr und nicht weniger.
  173.  
  174.  
  175.    13. Was passiert, wenn Compiler-Schalter in den Modulen eines
  176.        Programms unterschiedlich gesetzt sind?
  177.  
  178.       Compiler-Befehle sind "lokal" zum jeweiligen Unit oder dem Haupt-
  179.       programm; auch bei einem MAKE oder BUILD beginnt die Compilierung
  180.       jedes Moduls mit den über die Menüs bzw. durch die Kommandozeilen-
  181.       Parameter gesetzten Standardvorgaben. Die Schalterstellungen
  182.       einzelner Module sind also unabhängig voneinander.
  183.  
  184.  
  185.    14. Ist die Erzeugung eigener Unit-Bibliotheken (.TPL-Dateien)
  186.        möglich?
  187.  
  188.        Im Prinzip ja. Der Compiler verwendet allerdings nur eine
  189.        einzige Bibliothek (TURBO.TPL). Mit dem Programm TPUMOVER können
  190.        Sie TURBO.TPL eigene Units hinzufügen - es wäre also möglich, für
  191.        jedes größere Projekt eine separate Version von TURBO.TPL zu
  192.        erzeugen, die dann jeweils ins "Turbo directory" hineinkopiert
  193.        werden müßte.
  194.  
  195.  
  196.  
  197.    15. Welche Regeln sind bei der Erstellung von
  198.        Interrupt-Behandlungsroutinen zu berücksichtigen?
  199.  
  200.        Abgesehen davon, daß Sie sich mit dem BIOS des Computers und mit
  201.        Maschinensprache gut auskennen sollten, gibt es einige Punkte im
  202.        Zusammenhang mit Turbo Pascal:
  203.  
  204.        - Verwenden Sie GetIntVec und SetIntVec (aus dem Unit Dos) zur
  205.          Veränderung von Interrupt-Vektoren.
  206.        - Deklarieren Sie die Behandlungsroutine als interrupt und
  207.          verwenden Sie den Compiler-Befehl {$F+} - die Routine muß als FAR
  208.          codiert werden.
  209.        - Verwenden Sie innerhalb der Behandlungsroutine keine 
  210.          Aufrufe von DOS-Funktionen, der dynamischen Speicher-
  211.          verwaltung oder der Overlay-Verwaltung - der entsprechende 
  212.          Code ist nicht reentrant.
  213.        - Interrupt-Prozeduren und Funktionen müssen mit
  214.          Compilerdirektive $F+ (far calls) compilert werden
  215.        - ACHTUNG: Die Interrupt-Behandlungsroutine darf *nicht*
  216.          als Teil eines Overlays codiert sein oder Routinen auf-
  217.          rufen, die sich ihrerseits in Overlays befinden.
  218.  
  219.  
  220.    16. Wann ist eine Pascal-Routine als NEAR codiert, wann als FAR?
  221.  
  222.        Die allermeisten Programmierer werden sich um dieses Detail nie zu
  223.        kümmern brauchen - schließlich wählt der Compiler die richtige Art
  224.        des Aufrufs automatisch aus. FAR-Aufrufe und Rücksprünge werden nur
  225.        benutzt, wenn
  226.  
  227.        - die Routine im Interface-Teil eines Units deklariert ist
  228.        - oder der Compiler-Befehl {$F+} gegeben wurde. Dieser Befehl
  229.          *muß* für die folgenden Routinen verwendet werden:
  230.  
  231.              + Interrupt-Behandlung
  232.              + Fehlerbehandlung
  233.              + Exit-Prozeduren
  234.              + bei Verwendung von prozeduralen Typen
  235.              + Overlays
  236.  
  237.  
  238.    17. Lassen sich mit Turbo Pascal reentrante Routinen schreiben?
  239.  
  240.        Ja, wenn Sie die folgenden Regeln berücksichtigen:
  241.  
  242.        - Alle Daten, die die Routine verändert, müssen sich auf dem Stack
  243.          des Prozessors befinden (d.h. lokale Variablen oder übergebene
  244.          Parameter sein).
  245.        - Typisierte Konstanten werden auch dann im Datensegment
  246.          gespeichert, wenn sie lokal deklariert sind. Sie dürfen durch die
  247.          Routine nicht verändert werden.
  248.        - Punkte, an denen die Routine nicht unterbrochen werden darf,
  249.          müssen mit entsprechenden Befehlen (CLI / STI) eingefaßt werden.
  250.        - Die Routine darf keine anderen Routinen aufrufen, die ihrerseits
  251.          nicht ebenfalls reentrant sind (wie z.B. DOS).
  252.  
  253.  
  254.    18. Was muß bei Verwendung IEEE-Fließkommatypen beachtet werden ?
  255.  
  256.        Die Datentypen Single, Double, Extended und Comp sind nur 
  257.        im Modus {$N+} verfügbar. In der Version 5.0 setzt dieser
  258.        Modus aber keinen numerischen Coprozessor voraus - mit dem
  259.        Compiler-Befehl {$E+} läßt sich ein *Emulator* einbinden, der
  260.        einen Coprozessor nötigenfalls softwaremäßig simuliert.
  261.          Sie sollten allerdings überlegen, auf welchen Maschinen Ihr
  262.        Programm später laufen wird: Wenn diese Maschinen überwiegend
  263.        ohne Coprozessor auskommen müssen, dann empfiehlt sich trotz
  264.        des Emulators der Modus {$N-} und der Datentyp Real: Variablen
  265.        dieses Typs sind zwar um einiges ungenauer als das Format Double,
  266.        werden aber auf Maschinen ohne Coprozessor erheblich schneller
  267.        bearbeitet.
  268.          Für Maschinen, die mit einem Coprozessor ausgerüstet sind, gilt
  269.        das Gegenteil, weil der Typ Real vor jeder Rechenoperation soft-
  270.        waremäßig in ein IEEE-Format umgerechnet werden muß - folglich
  271.        sind hier der Modus {$N+} und die Datentypen Single..Extended
  272.        immer die bessere Wahl.
  273.  
  274.  
  275.    19. Was bitte ist der Typ Comp?
  276.  
  277.        Der Datentyp Comp speichert extrem große Integerzahlen - ähnlich
  278.        wie bei den BCD-Typen läßt er sich am besten für Operationen
  279.        verwenden, bei denen keine Rundungsfehler auftreten dürfen.
  280.          Obwohl Comp keine "Stellen nach dem Komma" definiert, lassen sich
  281.        Geldbeträge sehr einfach mit Comp-Variablen berechnen, wenn man mit
  282.        der Einheit "Pfennig" arbeitet und Ergebnisse bei der Ausgabe durch
  283.        100 dividiert.
  284.  
  285.  
  286.    20. Wieviele signifikante Stellen bieten die IEEE-Realtypen?
  287.  
  288.        Die Antwort auf diese Frage ist eine Tabelle:
  289.  
  290.        Typ        signifikante Dezimalstellen    Platzbedarf
  291.        ------------------------------------------------------
  292.        Single               7-8                  4 Bytes
  293.        Double              15-16                 8 Bytes
  294.        Extended            19-20                10 Bytes
  295.        Comp                19-20                 8 Bytes
  296.  
  297.  
  298.    21. Wo und wie werden Zwischenergebnisse bei Operationen mit
  299.        IEEE-Realtypen gespeichert?
  300.  
  301.        Auf dem Stack des 8086. Dasselbe gilt für die Übergabe von
  302.        Fließkomma-Werten an Prozeduren und Funktionen (die in der
  303.        Version 4.0 noch direkt in die Rechenregister des 8087 geladen
  304.        wurden).
  305.  
  306.  
  307.    22. Wie werden IEEE-Fließkommazahlen gerundet?
  308.  
  309.        Der numerische Coprozessor verwendet ein Rundungsverfahren aus dem
  310.        Bankwesen, das sich von der Schulmathematik leicht unterscheidet -
  311.        er rundet "Werte in der Mitte" immer zum nächsten *geradzahligen*
  312.        Wert hin. Einige Beispiele dazu:
  313.  
  314.               Round(0.4) -> 0  Round(0.5) -> 0  Round(0.6) -> 1
  315.               Round(1.4) -> 1  Round(1.5) -> 2  Round(1.6) -> 2
  316.                                ===============
  317.  
  318.  
  319.    23. Lassen sich Ein-/Ausgaben eines Turbo Pascal-Programms
  320.        umleiten?
  321.  
  322.        Solange Sie das Unit Crt *nicht* benutzen, läßt sich ein Turbo
  323.        Pascal-Programm beim Aufruf von der DOS-Kommandoebene aus in
  324.        derselben Weise umleiten wie jedes andere Programm auch. Wenn 
  325.        Sie Crt verwenden und sich die Möglichkeit zu Umleitung der
  326.        Ein-/Ausgabe offenhalten wollen, können Sie die Textdatei-
  327.        Variablen Input und Output mit Assign den Standardwegen von DOS
  328.        zuordnen:
  329.  
  330.            Assign(Output,''); Rewrite(Output);
  331.            Assign(Input, ''); Rewrite(Input);
  332.  
  333.  
  334.  
  335.    24. Wie lassen sich 3.0-Programme konvertieren, die mit
  336.        Chain-Dateien arbeiten?
  337.  
  338.        Chain und Execute sind für .EXE-Dateien prinzipbedingt nicht 
  339.        anwendbar. Die Version 5.0 bietet aber eine ganze Reihe 
  340.        von Alternativen:
  341.    
  342.        - Compilierung der einzelnen Chain-Module als Units
  343.  
  344.        - Compilierung der Module als eigenständige Programme und
  345.          Aufruf über die neue Prozedur Exec des Units DOS
  346.  
  347.        - Compilierung der einzelnen Chain-Module als Overlays (was
  348.          in den meisten Fällen die beste Lösung sein dürfte).
  349.  
  350.    25. Wie war das mit Overlays?
  351.  
  352.        *Das* ist eine der vielen Erweiterungen der Version 5.0 gegen-
  353.        über der Version 4.0. (Siehe Addendum, Kapitel 5, Beispielpro-
  354.        gramme OVRDEMO.PAS...)
  355.  
  356.  
  357.    26. Unterstützt Turbo Pascal 5.0 das Sperren von Dateien und 
  358.        einzelnen Records beim Betrieb in Netzwerken?
  359.  
  360.        Im Prinzip ja. Das Unit System enthält eine Variable namens
  361.        FileMode, über die die Art der Öffnung von Dateien festgelegt
  362.        werden kann. Die Laufzeitbibliothek enthält keine speziellen
  363.        Funktionen für das Sperren von Records und Dateiteilen (was aber
  364.        durch entsprechende Aufrufe von DOS ohne weiteres möglich ist).
  365.  
  366.  
  367.    27. Lassen sich Routinen über Zeigervariablen aufrufen?
  368.  
  369.        Ja - und zwar (im Gegensatz zu den Versionen 3.0 und 4.0) ohne
  370.        Tricks sowie mit sämtlichen Prüfmöglichkeiten durch den Com-
  371.        piler (Parameterzahl, -reihenfolge und -typ, Codierung als NEAR 
  372.        oder FAR etc). Kurz gesagt: die berüchtigten "prozeduralen Para.
  373.        meter" werden voll und ganz unterstützt. (Siehe Addendum,
  374.        Kapitel 7, Beispielprogramm PROCVAR.PAS, DIRDEMO.PAS...)
  375.  
  376.  
  377.    28. Kennt Turbo Pascal berechnete Konstanten (wie z.B. Turbo C)?
  378.  
  379.        Ja. Ab der Version 5.0 sind const-Deklarationen als *Ausdrücke*
  380.        definiert, die zum Zeitpunkt der Compilierung berechnet werden.
  381.        Die Möglichkeiten sind fast unbegrenzt:
  382.  
  383.        const
  384.          ElemCount = 100;
  385.  
  386.        var
  387.          SortArray: array[1..ElemCount-1] of Integer;         
  388.        const
  389.          SortSize: Integer = ElemCount * SizeOf(Integer);
  390.  
  391.  
  392.    29. Wie sieht es mit der größeren Effektivität der Version 5.0 im
  393.        direkten Vergleich zur Version 3.0 aus?
  394.  
  395.        Die Programme belegen rund 30% weniger Platz auf der Diskette, die
  396.        "typische" Geschwindigkeitssteigerung liegt zwischen 15 und 30%.
  397.  
  398.  
  399.    30. Welche Lizenzgebühren müssen für die Weitergabe selbst-
  400.        entwickelter Turbo Pascal-Programme an Borland gezahlt
  401.        werden?
  402.  
  403.        Wie bitte? So etwas haben wir noch nie nötig gehabt.
  404.  
  405.  
  406.    31. Wie sieht es mit der Fehlersuche aus, d.h. einem Debugger?
  407.  
  408.        In der Version 5.0 haben Sie schon fast die Qual der Wahl:
  409.  
  410.        - die integrierte Entwicklungsumgebung enthält einen Debugger,
  411.          der *auf der Quelltext-Ebene* und mit Pascal-Befehlen 
  412.          arbeitet. Er erlaubt die schrittweise Ausführung, die
  413.          Ausgabe und *Veränderung* von Variablenwerten des laufenden
  414.          Programms, Abbruchpunkte... 
  415.        - für die Fehlersuche auf der Ebene der Maschinensprache bieten
  416.          wir den Turbo Debugger an - ein separates, eigenständiges
  417.          Programm, mit dem nicht nur Pascal-Programme untersucht werden
  418.          können.
  419.        - Und schließlich: Die von Turbo Pascal 5.0 erzeugten .EXE-
  420.          Dateien lassen sich mit jedem Debugger analysieren, der
  421.          auch mit .MAP-Dateien arbeiten kann.
  422.  
  423.  
  424.    31. Gibt es etwas ähnliches wie die statischen lokalen Variablen von C?
  425.  
  426.        Globale Variablen, die im Implementations-Teil eines Units
  427.        deklariert sind, werden als lokal zum entsprechenden Unit behandelt
  428.        und können über den Initialisierungs-Teil des Units auf
  429.        vordefinierte Werte gesetzt werden. Diese Variablen behalten ihre
  430.        Werte zwischen mehreren Aufrufen des Units (wie andere globale
  431.        Variablen auch).
  432.          Typisierte Konstanten, die innerhalb einer Prozedur oder Funk-
  433.        tion deklariert sind, werden im Daten-Segment gespeichert und ver-
  434.        halten sich exakt wie statische lokale Variablen von C: sie 
  435.        behalten ihren Wert zwischen mehreren Aufrufen, sind aber lokal 
  436.        zur entsprechenden Routine.
  437.  
  438.  
  439.  
  440.    32. Wo sind die größten Probleme bei der Konvertierung von
  441.        3.0-Programmen zu erwarten?
  442.  
  443.        Das hängt natürlich von der Art des Programms ab - mit UPGRADE.EXE
  444.        (auf der Diskette II) und den in Kapitel 8 des Benutzerhandbuchs 
  445.        beschriebenen Schritten sollte eine Konvertierung aber nur in 
  446.        seltenen Fällen größere Probleme bereiten. UPGRADE kann sogar 
  447.        große Programme in Units unterteilen (und dabei selbständig die 
  448.        notwendigen Deklarationen der jeweiligen Interface-Teile erzeugen).
  449.  
  450.        - Die Übergabe von Parametern wird in der Version 5.0 wesentlich
  451.          effizienter ausgeführt - dementsprechend dürften bei den meisten
  452.          inline-Routinen Änderungen notwendig sein.
  453.        - Der Compiler führt eine strengere Typ-Prüfung aus und wird
  454.          getrennt deklarierte Typen in einigen Fällen als nicht mit
  455.          einander kompatibel ausweisen.
  456.        - Die Prozeduren MsDos und Intr erwarten einen Parameter des Typs
  457.          Registers, der im Unit Dos deklariert ist und die in der Version
  458.          3.0 notwendige Typ-Definition Regs = record .. (AX, BX, CX, DX..)
  459.          ersetzt.
  460.  
  461.  
  462.    33. Lassen sich kommerziell vertriebene .BIN-Dateien zusammen mit
  463.        der Version 5.0 verwenden?
  464.  
  465.        Solange diese .BIN-Dateien nur Daten enthalten, ist eine
  466.        Konvertierung mit BINOBJ.EXE (auf der Diskette II) in eine
  467.        .OBJ-Datei und die nachfolgende Aufnahme in das Pascal-Programm
  468.        mit dem Befehl {$L} problemlos.
  469.          Die Konvertierung von .BIN-Dateien, die ausführbaren Maschinen-
  470.        code enthalten, ist mit BINOBJ nicht ohne weiteres möglich - sie 
  471.        sollten beim Vertreiber der .BIN-Datei anfragen, ob die entspre-
  472.        chenden Routinen auch im .OBJ-Format erhältlich sind.
  473.  
  474.  
  475.    34. Werden Erweiterungen des Hauptspeichers (EMS) unterstützt?
  476.  
  477.        Ja - in mehrfacher Hinsicht:
  478.  
  479.        - Die integrierte Entwicklungsumgebung nutzt in der Version
  480.          5.0 eine EMS-Karte als Puffer für den Editor und spart
  481.          so bis zu 64 KByte Platz im Hauptspeicher ein.
  482.        - Die Overlay-Verwaltung macht es mit einer speziellen Initia-
  483.          lisierungsroutine (OvrInitEMS) möglich, sämtliche
  484.          Overlays von der Diskette in die EMS-Karte und von dort aus
  485.          bei Bedarf in den Hauptspeicher zu laden - was natürlich
  486.          beim Wechsel von Overlays erhebliche Geschwindigkeitsvor-
  487.          teile mit sich bringt.
  488.        - Direkte Steuerungen der EMS-Karte durch ein Programm sind
  489.          ebenfalls kein Problem, wie die Datei EMS.PAS (in DEMOS.ARC auf
  490.          der Diskette 2) demonstriert.
  491.  
  492.  
  493.    35. Lassen sich nach wie vor eigene Puffer für Textdateien anlegen?
  494.  
  495.        Ja - allerdings nicht über eine entsprechende Deklaration der
  496.        Textdatei-Variablen, sondern mit der Prozedur SetTextBuf, die auch
  497.        mit dynamisch belegten Puffervariablen arbeiten kann (siehe Kapitel
  498.        8 und 26 im 4.0-Handbuch).
  499.  
  500.  
  501.    36. Nach der Installation von TURBO.EXE mit dem Programm TINST
  502.        werden die neuen Einstellungen von Compiler-Schaltern nur teilweise
  503.        benutzt. Wieso?
  504.  
  505.        Wahrscheinlich haben Sie im momentanen Directory (oder dem "Turbo
  506.        Directory") eine Konfigurationsdatei (TURBO.TP) gespeichert.
  507.        TURBO.EXE lädt diese Datei beim Start automatisch - in ihr
  508.        enthaltene Parameter setzen die mit TINST festgelegten Vorgaben
  509.        außer Kraft. Nach der Löschung dieser Konfigurationsdatei sollte
  510.        TURBO.EXE auch die mit TINST gesetzten Vorgaben benutzen.
  511.  
  512.  
  513.    37. Sind Strings nach wie vor auf 255 Zeichen begrenzt?
  514.  
  515.        Ja. Zur Verwaltung längerer Zeichenketten müssen Sie eigene
  516.        Routinen schreiben.
  517.  
  518.  
  519.    38. Sind Schreibaktionen zum Gerät CON nach wie vor möglich?
  520.  
  521.        'Con' ist nicht mehr implementiert - solange das Unit Crt nicht
  522.        verwendet wird, entspricht ein Aufruf von Write oder Writeln (ohne
  523.        Angabe einer Datei-Variablen) aber exakt einer Ausgabe zu diesem
  524.        DOS-Standardgerät.
  525.          Die Dateiverwaltung und -systematik ist bereits in der Version 
  526.        4.0 völlig neu geschrieben worden, um die Verwendung eigener
  527.        Textdatei-Gerätetreiber zu ermöglichen. Mit derartigen Treibern
  528.        lassen sich Schnittstellen zu beliebigen Geräten implementieren
  529.        (wie den seriellen Ports, Fenster-Oberflächen usw).
  530.  
  531.  
  532.    39. Was bedeutet "constant merging"?
  533.  
  534.        Wenn ein und dieselbe String-Konstante mehrfach innerhalb eines
  535.        Programms angegeben ist, belegt der Compiler nur einmal
  536.        Speicherplatz dafür und verwendet ansonsten Zeiger.
  537.  
  538.  
  539.    40. Wie sieht es mit Laufzeitfehlern aus?
  540.  
  541.        Die Version 5.0 verwendet die Fehlercodes von DOS - IOResult
  542.        liefert also andere Resultate als in der Version 3.0. Darüber
  543.        hinaus werden nicht nur "normale", sondern auch "kritische" Fehler
  544.        (wie "Laufwerk nicht bereit..") von Turbo Pascal abgefangen und
  545.        können über IOResult ermittelt werden. Anhang F des Referenzhand-
  546.        buchs enthält eine Liste der Fehlermeldungen und -codes.
  547.