home *** CD-ROM | disk | FTP | other *** search
/ Mega Top 1 / os2_top1.zip / os2_top1 / APPS / PROG / PASCAL / SPEED2 / DOC / FAQ.DOC < prev    next >
Text File  |  1994-10-06  |  76KB  |  1,894 lines

  1. Chemnitz, Oct 1994
  2. by: Rene Nürnberger
  3.  
  4.            Answers to bug reports and faq's for SPEED-Pascal/2 for OS/2
  5.            ------------------------------------------------------------
  6.            Answered by the author
  7.            ----------------------
  8.  
  9. Actual release: SPEED-Pascal/2 for OS/2 Beta III (Oct 94)
  10.  
  11. Copyright (C) & (P) Vision Software Chemnitz /GERMANY
  12. c/o DMV-Verlag
  13.     Redaktion toolbox
  14.     z.Hd. Herrn R. Nürnberger
  15.     Gruber Str. 46a
  16.     D-85586 Poing
  17.     Germany
  18.     Fax: xx49-8121-769-199
  19.  
  20. or (better) via CompuServe 72662,2052
  21.  
  22. This Beta Release III is distributed by the german "toolbox" magazine.
  23. Special thanks to Jörg Braun and Wolfhard Rinke for all their help.
  24.  
  25. This is no shareware, no public domain, no freeware, no cripple ware
  26. but a service of the German toolbox mag. (We do not pac'th!).
  27.  
  28. This is a fully functional beta version of SPEED-Pascal/2,
  29. the only object oriented 32 bit pascal compiler for OS/2.
  30.  
  31. The final version (shipped about Jan/Feb '95) will cost about
  32. $100 or DM 150. Some limitations and bugs of this beta version will
  33. then be corrected. Especially a full english/german help will be
  34. supported. English/German handbooks are of course part of this
  35. final release. Further the final release will provide libraries for
  36. accessing the OS/2 DLL's without having to reverse the parameters as
  37. it is in this Beta and a context sensitive help for the IDE.
  38.  
  39. All programs and sources in this archive are copyrighted. Commerical
  40. use and publication are strictly prohibited. You may use SPEED-Pascal/2
  41. only for private purposes. Modification, decompilation and reengineering
  42. of the executables is prohibited. You may not change the copyright notices
  43. in the sources.
  44.  
  45. You may use, copy and redistribute the programs and sources in this archive
  46. if all files are unmodified. But you may not ship this program with any
  47. commerical programs.
  48.  
  49. Please mail bug reports and suggestions to the author (via CIS 72662,2052) !
  50.  
  51. Bugfixes and Updates will be placed into the German OS/2 User forum:
  52. GO OS2UGER
  53.  
  54. For a detailed list of the corrected bugs in this version see BUGREPOR.ENG
  55. (english) or BUGREPOR.GER (german).
  56.  
  57. To all users:
  58.               SPEED-Pascal/2 is the work of one single programmer (it's me).
  59.               Thank you for your interest and bug reporting !!!
  60.               I am a student of informatik and do "some" programming in
  61.               my sparetime or whenever I don't want to go to the
  62.               university... (UUUH)
  63.               I hope this Beta III removes most of the errors you detected.
  64.               For some reason there still can be errors, because I can
  65.               (of course) not test anything. Please keep the good work
  66.               and send more bug reports so Speed-OS/2 will get better and
  67.               better !!!
  68.  
  69.               Does anybody know details about the OS/2 DosDebug API function
  70.               (especially setting breakpoints and debug PM-Applications) and
  71.               the IBM debugger format ???? The IBM redbooks and whitepapers
  72.               give not enough information and it would be nice if the
  73.               IDE could have an integrated debugger like the BP-IDE.
  74.               This is in OS/2 no problem, because the DosDebug API provides
  75.               debugging support - but nobody seems to know details...
  76.               Please help !! ( A little source file in C would be nice )
  77.  
  78.               Does anybody know if it's somehow possible to call 32 Bit API
  79.               functions with PASCAL calling convention (Paremeters from
  80.               left to right onto the stack) since all API's
  81.               and PM-Functions use IBM _System calling convention. With the
  82.               16 Bit API's this is possible but not with the 32 Bit
  83.               calls !? This would be very helpful.
  84.  
  85. ----------------------------------------------------------------------------
  86. ----------------------------------------------------------------------------
  87.  
  88.  
  89. Question:
  90. ---------
  91.        I have downloaded speedos2.  Looks good.  Hope you are able to have
  92.        English help as well.  I have an error to report.
  93.  
  94.        While scrolling a text window (two windows were open) ...
  95.  
  96.        Access violation at 000170d3    speed.exe  0001:70d3
  97.  
  98.        P1=00000001     P2=0009fffc     P3=X           P4=X
  99.        EAX=00000e80    EBX=0000001d    ECX=001fd783   EDX=000036a0
  100.        ESI=0009fffc    EDI=000a0e7c
  101.  
  102.        DS=00000053  DSACC=0000d0f3  DSLIM=1bffffff
  103.        ES=00000053  ESACC=0000d0f3  ESLIM=1bffffff
  104.        FS=0000150b  FSACC=000000f3  FSLIM=00000030
  105.        GS=00000000  GSACC=xxxxxxxx  GSLIM=xxxxxxxx
  106.  
  107.        CS:EIP=5b:000170d3  CSACC=d0df   CSLIM=1bffffff
  108.        SS:ESP=53:00023980  SSACC=d0f3   SSLIM=1bffffff
  109.  
  110.        EBP=23986
  111.        FLG=12602
  112.  
  113.        Hope that helps
  114.        HURRA !!!
  115.  
  116. Answer:
  117.        HURRA !!!
  118.        This problem seems to be corrected in the new Beta Release III
  119.        which runs completely under OS/2. However there still can be
  120.        some errors (??).
  121.        English help will be supported in the final version (shipped about
  122.        Jan/Feb '95) for about $100 or DM 150.
  123.  
  124. ----------------------------------------------------------------------------
  125. ----------------------------------------------------------------------------
  126.  
  127. Question:
  128.  
  129.          Wie lange haben wir auf diesen Pascal 32-bit Compiler gewartet!!!
  130.  
  131.          Ich bin vom ersten Eindruck begeistert; besonders die
  132.          TurboPascal-Kompatibilitaet ist zu begruessen!
  133.  
  134.          Für mich besonders wichtig ist das Anlegen von riesigen Datenfeldern.
  135.          (z.B. 3000x3000xInteger). Leider habe ich das bisher mit SpeedPascal
  136.          nicht hinbekommen. Mit den 16-bit Compilern (IBM Pascal/2 bzw.
  137.          BorlandPascalOS2-Patch) kann man Arrays dieser Groesse nur mit Tricks
  138.          erreichen. Ich hatte nun gehofft, da_ bei einem 32-bit Pascal solche
  139.          Einschraenkungen nicht mehr gelten. Habe ich etwas falsch gemacht
  140.          oder ist das fuer die Beta-Version doch etwas zu viel?
  141.  
  142.          Wieso sollte eine Deklaration wie:
  143.  
  144.          TestArray : Array[1..2000, 1..2000] Of Integer;
  145.  
  146.          nicht funktionieren? Eine 64k-Beschraenkung gibt es doch nicht mehr!
  147.  
  148.          Frank Schwedler
  149.  
  150.          internet: ngg05@rz.uni-kiel.d400.de
  151.          mausnet:  frank_schwedler@ki.maus.de
  152.  
  153. Answer:
  154.        Das ist tatsächlich ein Bug von SPEED-Pascal/2. In der Beta
  155.        Version III ist dieser Fehler behoben.
  156.        Wie auch immer: Da SPEED-Pascal/2 ALLE Variablen mit festen Werten vor-
  157.        belegt (0 oder sonst einen sinnvollen Wert) und mit in das EXE
  158.        File schreibt, ist es nicht sinnvoll ein größeres Array als globale
  159.        Variable zu definieren. Das Ergebnis wäre eine immens große EXE Datei
  160.        und eine inakzeptable Compiliergeschwindigkeit. Viel eleganter ist
  161.        es das Array als dynamische Variable zu vereinbaren etwa wie folgt:
  162.  
  163.        TYPE
  164.            TestArray=Array[1..2000, 1..2000] Of Integer;
  165.  
  166.        VAR pArr:^TestArray;
  167.  
  168.        BEGIN
  169.             New(pArr);
  170.             {... some code ... z.B. pArr^[1000,1000]:=2;}
  171.             Dispose(pArr);
  172.        END.
  173.  
  174.        Damit nutzen Sie den Heap von Speed-OS/2 und das Limit ist 512 MB !
  175.  
  176. ----------------------------------------------------------------------------
  177. ----------------------------------------------------------------------------
  178.  
  179.  
  180. Question:
  181.        i've tried making the SpeedOS2 work.  No go.  It compiled-- maybe I
  182.        haven't got the compilation options right-- but trying to run this
  183.        program through PAS.PAS resulted in the DOS session hanging:
  184.  
  185.        program Test;
  186.        begin
  187.           writeln('Hello.');
  188.        end.
  189.  
  190.        I look forward to discussing this with you when you get back.
  191.  
  192. Answer:
  193.        I could not find out the error, on my system the program is compiled
  194.        and executed correctly. Maybe there's some other reason for this
  195.        error. However try compile with the new Beta III as I did.
  196.  
  197. ----------------------------------------------------------------------------
  198. ----------------------------------------------------------------------------
  199.  
  200.  
  201. Question:
  202.        On my system, the Vision IDE shuts down if I press page down.  It
  203.        also only loads/shows part of a loaded file.
  204.        This could be because I'm running at 1024x768.
  205.  
  206.        On both this and the previous system I've noticed that you have
  207.        certain differences from the Borland product, in terms of notation.
  208.        For example,
  209.  
  210.        inherited.AMethod;
  211.  
  212.        I can think of a lot of reasons why the changes might be easier to
  213.        implement, but I guess what I'm curious about is, are you going to
  214.        try for greater Borland compatibility?
  215.  
  216.        More ramblings as they occur to me.  By the way, I _really_ like the
  217.        magazine.  Vas ist "dasselbe"?
  218.  
  219.        Oh, and are you planning to have a VDE to go with this?  You know, a
  220.        Delphi/VB type interface.
  221.  
  222. Answer:
  223.        In the actual Beta III the inherited call is now possible in both
  224.        ways -- Inherited AMethod (like Borland) and Inherited.AMethod (more
  225.        understandable I think).
  226.        At the meantime I cannot test your IDE bug because of terrible
  227.        hardware at my side (URRGH). Of course the reason can be your
  228.        1024x768 mode but I cannot test because I only have 640x480
  229.        standard VGA. This will change in a few weeks...
  230.        But try with the new beta III because the IDE was rewritten.
  231.        In the future a connection to Delphi is planned, especially a
  232.        library compatible to Delphi's "VCL" (Borlands new OWL).
  233.        By the way: "dasselbe" means "the same as".
  234.  
  235.  
  236. ----------------------------------------------------------------------------
  237. ----------------------------------------------------------------------------
  238.  
  239.  
  240. Question:
  241.          I was very excited when I heard of your 32-bit object oriented
  242.          Pascal compiler because I prefer to program in Pascal when I can
  243.          and I prefer to program for OS/2 when I can.  After trying the
  244.          compiler for a few days I am quite impressed but there are several
  245.          problems which prevent me from being able to use the compiler
  246.          for any serious work as it stands.
  247.  
  248.          The first catagory of problems are features of standard pascal that
  249.          are missing:
  250.  
  251.          1. WITH statements do not seem to work.  The following segment will
  252.          not compile:
  253.  
  254.          Var R : Record A,B : Word; End;
  255.          Begin
  256.             With R Do A := 1;
  257.          End;
  258.  
  259.          2. Sets do not work correctly.  The following declaration would not
  260.          compile:
  261.  
  262.          Var S : Set of Byte;
  263.  
  264.          3. No real numbers of any sort seem to be supported.
  265.  
  266.          These missing features or problems are very important to me and I
  267.          would not be able to use a Pascal that did not include them.
  268.  
  269.          The second catagory of problems have to do with the Object Oriented
  270.          extensions.
  271.  
  272.          1. The special syntaxes New(P,<constructor>) and
  273.          Dispose(P,<destructor>) are not supported.
  274.          Although I would use the compiler without this it is extremely
  275.          convienient and ought to be supported.
  276.  
  277.          2. Virtual destructors are a necessity for practical
  278.          object oriented programming.
  279.  
  280.          3. The following program will not compile for some reason.
  281.  
  282.          (*****************************)
  283.  
  284.          Program Tmp;
  285.  
  286.          Type
  287.             PObj =  ^TObj;
  288.             TObj = Object
  289.                         Constructor Init;
  290.                         Destructor  Done;
  291.                         Procedure   Test; virtual;
  292.             End;
  293.  
  294.             Constructor TObj.Init;
  295.             Begin
  296.             End;
  297.  
  298.             Destructor TObj.Done;
  299.             Begin
  300.             End;
  301.  
  302.             Procedure TObj.Test;
  303.             Begin
  304.             End;
  305.  
  306.             Var O : TObj;
  307.             Begin
  308.                 O.Init;
  309.                 O.Done;
  310.             End.
  311.  
  312.             The third catagory are inconsistancies with Turbo Pascal extensions.
  313.             These may not cause me to not use the compiler but having them
  314.             fixed would allow the use of many of my existing units.
  315.  
  316.             1. Strings seem to be only implemented as null-terminated strings.
  317.             This will break many pieces of code which rely on the 0th byte
  318.             being a length byte.
  319.  
  320.             2. Pointer arithmetic on PChars doesn't seem to work.
  321.  
  322.             3. <PChar Var> := @<Array of Characters> doesn't work.
  323.  
  324.             4. Inline assembly does not recognize local variables and
  325.             parameters.
  326.  
  327.             Finally, I found a few appearent bugs.
  328.  
  329.             1. This nested procedure gives an error:
  330.  
  331.             (******************)
  332.             Program Tmp;
  333.  
  334.             Procedure One;
  335.             Var A : LongInt;
  336.  
  337.             Procedure Two;
  338.             Begin
  339.                  A := 1;
  340.             End;
  341.  
  342.             Begin
  343.                 Two;
  344.             End;
  345.  
  346.             Begin
  347.                 One;
  348.             End.
  349.  
  350.             (******************)
  351.  
  352.             2. This value type cast gives an error:
  353.  
  354.             Var L : LongInt;
  355.             Begin
  356.                  L := LongInt(1);
  357.             End;
  358.  
  359.  
  360.             I hope I don't sound too critical.  I just think this could be
  361.             a very useful service if some of these things are fix and/or
  362.             changed.  I work with Pascal in my full time job and excersize
  363.             if to it's limits.  Although I would not use this compiler at
  364.             work, obviously, I still have a large number of units
  365.             and programs which I can use to test the compiler if the above
  366.             are changed.
  367.  
  368.             Please feel free to e-mail me if you need any clarification.
  369.  
  370.             Eric Blood
  371.             eblood!tlizard@wicat.com  or
  372.             eblood@wicat.com if the first doesn't work for you.
  373.  
  374.             P.S. I find that having to press a key after an error message is
  375.             annoying and I'm not sure what the use of it is.
  376.  
  377.             P.P.S. Are there any plans for a debugger?  If not will you at
  378.             least be able to write a symbol table in some format so that
  379.             IPMD could be used or so that gdb (the gnu debugger) could
  380.             be modified to work with Pascal programs?
  381.  
  382.             ----------------------------------------------------------------
  383.             Eric Blood                             Telephone: 1-801-377-7708
  384.             tlizard!eblood@wicat.com               Address:   625 N 600 W #5
  385.                                                    Provo, UT  84601
  386.             Subject: SPDos2
  387.  
  388. Answer:
  389.        OOPS ! - What a bug report !!!!
  390.  
  391.        First catagory:
  392.           1. It's done ! The WITH statement is now implemented in Speed-OS/2.
  393.           2. The Set Types are exteded now to SET OF BYTE and SET OF CHAR.
  394.           3. In the actual beta III real types (REAL,DOUBLE,EXTENDED)
  395.              are now supported plus the correspondending functions
  396.              (sin,cos,....).
  397.           4. Nested proedures are currently not implemented... Sorry !
  398.        Second catagory:
  399.           1. The Borland typical New(<P>,constructor) and Dispose(<P>,
  400.              destructor) are not supported under Speed-OS/2 since Speed
  401.              automatically allocates the space for a object when
  402.              calling the constructor or releases memory when calling the
  403.              destructor. By the way: The new Borland compiler "Delphi"
  404.              does it in the same way.
  405.              For the same reason it is not needed to declare a pointer to
  406.              an object, simply type:
  407.  
  408.              Program Tmp;
  409.  
  410.              Type
  411.                 TObj = Object
  412.                            Constructor Init;
  413.                            Destructor  Done;
  414.                            Procedure   Test; virtual;
  415.                        End;
  416.  
  417.              Constructor TObj.Init;
  418.              Begin
  419.              End;
  420.  
  421.              Destructor TObj.Done;
  422.              Begin
  423.              End;
  424.  
  425.              Procedure TObj.Test;
  426.              Begin
  427.              End;
  428.  
  429.              Var O : TObj;
  430.              Begin
  431.                  O.Init;
  432.                  O.Done;
  433.              End.
  434.  
  435.           2. Virtual destructors are included in the actual Beta III.
  436.           3. See above.
  437.        Third catagory:
  438.           1. Strings are implemented in the Turbo-Pascal manner (0th Byte
  439.              holds the length) as standard type STRING and as C-like
  440.              0-terminated Strings as standard type PString.
  441.              The type STRING includes both because it has the length of
  442.              the string in the first byte AND is terminated by a "0"-Byte
  443.              since you use the standard string functions and no inline
  444.              assembler.
  445.           2. The PChar type now defined as a pointer to PString.
  446.           3. See under 2.
  447.           4. When using inline assembler you can change parameters when
  448.              you place a '$' before the parameter name.
  449.  
  450.              f.e.
  451.              PROCEDURE Test(VAR a:BYTE);
  452.              VAR b:LONGWORD;
  453.              BEGIN
  454.                   ASM
  455.                      MOV EDI,$a
  456.                      MOVB [EDI+0],0
  457.                      MOVD $b,0
  458.                   END;
  459.              END;
  460.  
  461.           In the current beta III a debugger support for the IPMD
  462.           debugger is (partial) included. It is planned to integrate the
  463.           debugger into the IDE as Borland does.
  464.           Does anybody know details about the OS/2 DosDebug function
  465.           (especially setting breakpoints and debug PM-Applications) and
  466.           the IBM debugger format ????
  467.           5. The wrong typescast is corrected in the new Beta III.
  468.  
  469. ----------------------------------------------------------------------------
  470. ----------------------------------------------------------------------------
  471.  
  472.  
  473. Question:
  474.          Hi Rene,
  475.  
  476.          You'll probably get flooded with requests by now. I've just
  477.          downloaded SPDos2. Nice work! I can't wait for the IDE to be fully
  478.          functional. I like the idea for the compiler to be Turbo Pascal
  479.          compatible. Thanks for your efforts, it is appreciated!
  480.  
  481.          Here are some of the observations I've made while playing around
  482.          with SPDos2, I'm marking the relevant code with ">>", btw, if
  483.          there is more than one version available, I used
  484.          "SPEED-Pascal/2 for OS/2 V 1.0 (Beta) Demo Version (1994)":
  485.  
  486.         -------------------------------------------------------------------
  487.         - SPDos2 doesn't understand/handle Arrays of Arrays yet:
  488.  
  489.            Fatal compiler error:No more index registers in:36,1 ()
  490.  
  491.         HexArr[1] := HexByte Shr 4;
  492.         HexArr[2] := HexByte And $0F;
  493.         >> RetStr := HexDigits[HexArr[1]] + HexDigits[HexArr[2]] +
  494.                      RetStr;
  495.         ----------------------------------------------------------------------
  496.         - In quite a number of my Turbo Pascal progs I use the "Port"
  497.         command, what is the eqivalent for SPDos2?
  498.  
  499.         Fatal compiler error:Undefined identifier in:58,14 (PORT)
  500.  
  501.         >>  Port[IoAddr + $406] := ECNTRL_SAPROM Or ECNTRL_THIN;
  502.        ------------------------------------------------------------------------
  503.        - Formatting for variable writes would be a nice adition
  504.  
  505.        Fatal compiler error: ) expected in:13,14 ()
  506.  
  507.        >>  WriteLn(Hour:3, Min:3, Sec:3, Sec100:3);
  508.        ---------------------------------------------------------------------
  509.        - How do you call .dll's from SPDos2? I'd like to do some network
  510.          programming.
  511.  
  512.        If you can help me with this one, I can send you some more info on
  513.        this, if required. The .dll's I'd like to use was created either with
  514.        Watcom C or CSet/2.
  515.        ---------------------------------------------------------------------
  516.        - Some .doc's would be nice, helpfull for more effective testing etc.
  517.        ---------------------------------------------------------------------
  518.  
  519.        Thanks for the good work, looking for a 32-bit Pascal compiler (+OS/2 Pascal)
  520.        for a long time.
  521.        Anton Opperman
  522.        itbaop@pukrs7.puk.ac.za
  523.        Nice job!!!
  524.  
  525. Answer:
  526.        Thank you for your interest.
  527.        1. The "Array of Array" problem is corrected in the new Beta III.
  528.        2. The Port command is not available under Speed-OS/2 because OS/2
  529.           does not allow direct access to the hardware and accessing ports
  530.           is a protected operation in protected mode causing a "General
  531.           protection fault". You have to acces your ports via OS/2 API
  532.           functions. Does anybody know more about accessing ports with
  533.           OS/2 API's ??
  534.           Maybe in the next beta release I implement the Port command !
  535.        3. Formatting for variable writes is included in the actual beta III.
  536.        4. To use third party DLL's with Speed-OS/2 you have to know the
  537.           DLL-name and the ordinal number of the DLL-function. Recognize that
  538.           you have to write the parameterlist from right to left when using
  539.           functions compiled with a C Compiler because PASCAL pushes the
  540.           parameters from left to right and C from right to left (URRRGH).
  541.  
  542.           For example you want to use the C function TEST(int a,b) declared
  543.           in the DLL TestDll.DLL under ordinal number 100. (You can view the
  544.           ordinal number with IBM's EXEHDR or the Shareware EXEMAP)
  545.           --> Resulting program:
  546.  
  547.           PROGRAM MyTest;
  548.                                 I-----This is important !
  549.           IMPORTS               I
  550.                  PROCEDURE Test(b,a:INTEGER):TestDll index 100;
  551.           END;
  552.  
  553.           BEGIN
  554.                Test(1,2);  {Call the DLL function}
  555.           END;
  556.  
  557.           If you use DLL's created with Speed-OS/2 you have to replace
  558.           "IMPORTS" with "IMPORTS PASCAL" since these functions use the
  559.           PASCAL calling convention. In this case you don't have trouble
  560.           with the parameterlist !
  561.  
  562. ----------------------------------------------------------------------------
  563. ----------------------------------------------------------------------------
  564.  
  565. Question:
  566.          Das Program ist noch nicht vollich fertig, es funktioniert aber
  567.          ziemlich gut.
  568.  
  569.          Wass noch fehlt:
  570.  
  571.            * Floating-point (Reals / Doubles)
  572.            * Die ODD Funktion
  573.            * Einfaches multi-threading-Verfahren
  574.            * Procedural types
  575.            * Virtual Destructors !!!
  576.            * Conditional Defines {$ELSE} {$IFNDEF}
  577.            * Random Zahlen
  578.            * Identifier chopping (ermöglicht längere identifiers)
  579.  
  580.            Es ist moglich um in eine Dos-session ein OS/2 program zu starten,
  581.            statt der meldung "This program ..." ist es für den Stub auch
  582.            möglich sich selbst als OS/2 program zu starten!!
  583.  
  584.  
  585.            Entdeckte "Bugs":
  586.  
  587.            *  Das QSORT.PAS beispiel (bei Borland Pascal mitgeliefert)
  588.            kompiliert nicht. Speed Pascal endet mit "Runtime Error 216"
  589.            (General Protection Fault)
  590.  
  591.            *  ABS(-5) liefert 251 oder -5 (umgebungsabhängig)
  592.  
  593.            I:=-5;
  594.            I:=ABS(I); liefert (korrekt) 5.
  595.  
  596.            *  Es ist nicht erlaubt um in verschiedene Units
  597.            Konstanten/Types mit die gleiche Name zu definieren.
  598.  
  599.            *  Typecasting hat noch einige Fehler:
  600.  
  601.            VAR C:CHAR;
  602.            I:INTEGER;
  603.  
  604.            CHAR('A')     <--- "Missing )"
  605.            CHAR(C)       <--- "Illegal Instruction MOV"
  606.            WORD(I)       <--- "Illegal Instruction MOV"
  607.  
  608.            *  Die VIRTUAL Definition ist nicht wie bei Borland Pascal und
  609.            es ist buggy bei inherite Objekten.
  610.  
  611.            *  "Type PString=^String;" la"sst sich nicht kompilieren:
  612.            "END expected"
  613.  
  614.            *  "Const MaxHeapSize: Word = 655360 div 16;" liefert
  615.            "Range Check Error", aber 655360 div 16 ist nur 40960!
  616.  
  617.            *  "Const Einschalten = True;" liefert "Type conflict in ..."
  618.  
  619.            *  "With RecordVar do Begin" liefert ein Fehler
  620.  
  621.            *  UNIT Test;
  622.            INTERFACE
  623.            ....
  624.            ....
  625.            IMPLEMENTATION
  626.  
  627.            END.
  628.  
  629.            ist nicht erlaubt, Speed Pascal braucht ein BEGIN-statment.
  630.  
  631.            *  UNIT Test;
  632.            INTERFACE
  633.  
  634.            Procedure Dummy(Parameter : Word);       ----+   parameter
  635.                                                         |   prolongation
  636.            IMPLEMENTATION                               |
  637.                                                         |
  638.            Procedure Dummy;                         <---+
  639.            Begin                                        |
  640.              If Parameter=1 then ......             <---+
  641.            End;
  642.  
  643.            Begin
  644.            End.
  645.  
  646.            ist nicht erlaubt.
  647.  
  648.            *  TMONITORPOSITION = record
  649.            fPosition : Word;
  650.            index     : Word;                 <---- Fehler ??? Nicht bei Borland...
  651.            pbInBuf   : Longint;
  652.            offOutBuf : Word;
  653.            end;
  654.  
  655.            Dieses kompiliert nicht.
  656.  
  657.           *  Die CONCAT Funktion ist nicht austauschbar mit der Borland
  658.           Variante: S4:=Concat(S1,s2,s3);
  659.  
  660.           *  Die RESET Prozedure ist nicht austauschbar mit der Borland
  661.           Variante
  662.  
  663.           *  TCharSet = set of Char;
  664.           Dieses ist nicht erlaubt.
  665.  
  666.           *  "No more index-registers"
  667.  
  668.           procedure Teilen(Source:string;var Dest:Array[1..40] of string);
  669.           var Counter,WordCounter:integer;
  670.           begin
  671.           {....}
  672.              for Counter:=1 to length(Source) do
  673.              begin
  674.                   {.....}
  675.                   if Source[Counter]<>#32 then
  676.                       Dest[WordCounter]:=Dest[WordCounter]+Source[Counter];
  677.              end;
  678.              {....}
  679.           end;
  680.  
  681. Answer:
  682.        * Floating point Typen werden nun unterstützt
  683.        * Das QSort Programm läßt sich nun compilieren wenn die in Speed
  684.          nicht erlaubte verschachtelte Prozedur aufgelöst wird !
  685.        * Die ODD Funktion ist nun implementiert
  686.        * einfache Prozeduren zum Starten und Behandeln von Threads sind nun
  687.          in der Unit DOS definiert.
  688.        * Prozedurtypen sind zur Zeit nicht implementiert.
  689.        * Virtuelle Destruktoren sind nun verfügbar
  690.        * Die Conditional Defines {$ELSE},{$IFDEF},{$DEFINE},{$UNDEF},
  691.          {$IFNDEF}) sind nun implementiert
  692.        * Random Zahlen sind nun implementiert
  693.        * Identifier chopping ist zur Zeit nicht verfügbar
  694.        * Ein OS/2 Programm von einer DOS-Session aus zu Starten ist
  695.          generell nicht möglich.
  696.        * Typen und Konstanten müssen eindeutig sein. Bei Verwendung in Units
  697.          müssen die Typen/Konstanten im Implementation Teil vereinbart
  698.          werden und sind dann nur für diese Unit gültig. Dies funktioniert
  699.          mit der neuen Beta III.
  700.        * Die Fehler im TypeCasting sind behoben
  701.        * Die Virtual Funktion ist nun analog zu Borland Pascal. Ein Inherited
  702.          Aufruf ruft IMMER die Methode eines Elternobjektes auf !
  703.        * Der Typ PString selbst ist in Speed-OS/2 ein Standarddatentyp und
  704.          entspricht einen Null terminierten String wie in C. (kein Zeiger !)
  705.          Verwenden Sie einen anderen Variablennamen !
  706.        * Der Bug in den typisierten Konstanten ist behoben
  707.        * Der Fehler in der Konstantendefinition ist behoben
  708.        * Der WITH Befehl ist nun endlich verfügbar !
  709.        * Ein BEGIN Statement muß in Speed für das Hauptprogramm immer
  710.          angegeben werden.
  711.        * Exportierte Prozeduren/Funktionen müssen in der Implementation
  712.          wieder komplett angegeben werden.
  713.        * "Index" ist in Speed-OS/2 ein reserviertes Word und darf deshalb
  714.          nicht als Variablenname verwendet werden.
  715.        * Die CONCAT Funktion ist nun Borland kompatibel
  716.        * Die Reset/Rewrite Prozedur ist nun Borland kompatibel
  717.        * Set Typen sind nun erweitert worden
  718.        * Das Problem der Indexregister ist behoben
  719.  
  720. ----------------------------------------------------------------------------
  721. ----------------------------------------------------------------------------
  722.  
  723. Question:
  724.          Die generierte Code ist ziemlich schnell, aber einige Optimierungen
  725.          sind noch immer möglich.
  726.  
  727.          (die nächste Beispiele enthalten Code generiert durch Speed Pascal)
  728.  
  729.          *  MOVZX AX,AL  (generiert durch Speed Pascal)   [3 Clockcycles]
  730.  
  731.             ist träger als "MOV AH,0" oder "XOR AH,AH"    [1 Clockcycle]
  732.             oder "AND AX,0FFh"
  733.  
  734.          Im algemeinen:
  735.  
  736.          Ein  "MOV + AND" ist oft schneller als "MOVZX"
  737.  
  738.          *  Speed Pascal nützt (wie Borland Pascal) Systemcalls für
  739.             Stringfunktionen, direct einfu"gen ist aber viel schneller!
  740.             (Das Program wird aber grösser, vielleicht ist eine
  741.             Compilerswitch ein gutes Idee)
  742.  
  743.          *  Eine For-loop mit einem festen Anfangspunkt liefert
  744.  
  745.             MOVD <counter> , immediate constant
  746.             MOV  EAX , <counter>
  747.             CMP EAX , <maximum>
  748.             <conditional jump>
  749.  
  750.             Dieses kann ersetzt werden mit
  751.  
  752.             MOVD <counter> , immediate
  753.             MOV EAX , immediate   ; <-- dieses ist vielleicht überflu"ssig
  754.             CMP <maximum> , immediate   ; Als Maximum auch eine Constante ist,
  755.             <conditional jump>          ; ist die Compare u"berflu"ssig.
  756.              ^^^^^^^^^^^^^^^            ;
  757.             (Die conditional Jump ist geändert!)
  758.  
  759.  
  760.             Algemeiner:
  761.             Es hat oft Vorteile um Constanten durchzufuhren, weil
  762.                 1) eine nächste Instruktion oft überflüssig /
  763.                    Vorkalkuliert / Besser optimiert werden kann
  764.                 2) die erste Instruktion (oft MOV EAX,imm) überflüssig
  765.                    worden kann
  766.  
  767.           *  Eine For-loop (mit festes Ende-Zahl) generierte diese Code:
  768.  
  769.           MOV AX,$T
  770.           CMP AX,1023
  771.           JGE !L37
  772.           INC AX
  773.           MOV $T,AX
  774.  
  775.           Aber
  776.  
  777.           CMP $T,1023
  778.           JGE !L37
  779.           INC $T
  780.  
  781.           hat die gleiche Auswirkung.
  782.  
  783.           *  Speed Pascal kann diese Code generieren
  784.  
  785.           MOV $I,AX
  786.           MOV AX,$I       <--- Sehr u"berflu"ssig!!!
  787.  
  788.           *  Intel(tm) sagt (über die MOVSX Instruktion) in das
  789.              Pentium(tm) Handbuch:
  790.  
  791.           Est hat Vorteile um "MOVSX" zu ersetzen durch eine
  792.           MOV-Instruction und eine Sign-Extend-Instruction (zB CBW).
  793.           Dieses kostet gleich viele Clockcycles aber die zweite Instruction
  794.           kann oft gleichzeitig mit eine andere Instruktion laufen.
  795.           [ Dieses ist nur korrekt für Pentium Machinen]
  796.  
  797.          *  Intel sagt u"ber die MUL-Instruktion:
  798.          Multiplizieren mit einer positiven Konstante kann zehr oft optimiert
  799.          werden durch eine Serie von Bitshifts und ADDs. Für eine
  800.          Pentium-Machine ist das Break-Even-Punkt einen Zahl mit 8 gesetzte
  801.          Bits, für eine 486-Machine einen Zahl mit 6 Bits.
  802.  
  803.          Ebenso:
  804.  
  805.          Multiplizieren mit einige Konstanten kann auch mit eine erweiterte
  806.          LEA-Instruktion implementiert werden:
  807.  
  808.          MUL EAX,5  -->  LEA EAX,[EAX*4+EAX]
  809.  
  810.          *  " SUB ESP,6
  811.          SUB ESP,257 "
  812.  
  813.          SUB ESP,263 kann natürlich auch, und ist schneller.
  814.  
  815.  
  816.          *  "Instruction-scheduling for the Pentium-superscalar architecture"
  817.          wäre  sicher ein schönes detail.. (Und nicht so schwierig zu
  818.          implementieren, Ich habe es schon mal getan)
  819.  
  820.          Greetings,
  821.  
  822.          Arjan van de Ven
  823.          Burg.Schafratstr.38
  824.          5427 SR Boekel
  825.          The Netherlands
  826.          arjan@stack.urc.tue.nl
  827.  
  828. Answer:
  829.          Einige Ihrer Anmerkungen habe ich in den Compiler integriert,
  830.          andere waren aufgrund der Parserarchitektur nicht möglich oder
  831.          zu aufwendig. Es ist klar das ein Compiler nie einen optimalen
  832.          Code erzeugen kann. Die vielen Optimierungen wie sie bei
  833.          C-Compilern üblich sind sind sowieso nicht implementiert und wären
  834.          auch viel zu aufwendig.
  835.          Vielen Dank trotzdem !
  836.  
  837.          Der Compilerschalter {$Z+} generiert nun inline code für
  838.          Stringzuweisungen. {$Z-} ruft die normalen Bibliotheksroutinen
  839.          auf.
  840.  
  841.          Die FOR-Anwesiung wurde entsprechend ihren Anmerkungen teilweise
  842.          optimiert.
  843.  
  844.          MOVZX wird nun teilweise durch einen MOV und eine XOR Operration
  845.          ersetzt.
  846.  
  847. ----------------------------------------------------------------------------
  848. ----------------------------------------------------------------------------
  849.  
  850. Question:
  851.          Fm: Christian Fridgen [100271,3301]
  852.          To: R. Nurnberger [72662,2052]
  853.  
  854.          Hi,
  855.          ich habe heute mal den Speed 386 Compiler von der Toolbox CD
  856.          installiert. Leider erkennt OS/2 das Programm PASOS2.EXE nicht als
  857.          Programm. Beim Starten erscheint lediglich der Einstellungsdialog
  858.          und unter Sitzung sind alle Punkte deaktiviert und auser Fenster
  859.          beim Beenden schliessen ist nichts markiert. Wie kann ich denn
  860.          dieses Programm starten (auser in der DOS Box) ? Vor allem, wie soll
  861.          ich es in die Kommandozeile eines Editors einbinden. Wenn ich es
  862.          daruber starte, erscheint immer die Meldung 'Programm kann nicht
  863.          gestartet werden, es mus sich um ein OS/2 oder DOS Programm handeln'.
  864.          Der Start aus der DOS-Box funktioniert ubrigens einwandfrei.
  865.  
  866.          CIAO Christian
  867.  
  868. Answer:
  869.          Die Version welche Sie erworben haben ist wahrscheinlich die DOS
  870.          Demo Version. Diese ist nur in der DOS-Box lauffähig und nicht
  871.          direkt unter OS/2.
  872.          Die neue Beta III ist ein vollständiges OS/2 Programm. Die
  873.          enthaltenen Kommandozeilenversionen können Sie auch in einen
  874.          Editor einbinden ! Beachten Sie dabei daß sich alle benötigten
  875.          DLL's im DLL-Suchpfad oder im Programmpfad befinden das OS/2
  876.          das Programm sonst nicht startet sondern den Einstellungsdialog
  877.          anzeigt.
  878.  
  879. ----------------------------------------------------------------------------
  880. ----------------------------------------------------------------------------
  881.  
  882.  
  883. Question:
  884.          Here are a number of other observations I have made.
  885.          They are not all bugs, but they are things which may cause
  886.          problems (or irritations) to Pascal programmers who are used to
  887.          the "Turbo" (including StonyBrook Pascal+) dialect.
  888.          I would suppose that a large number of your target audience will
  889.          consist of these people, and it may be a good idea to try and
  890.          accommodate them in some way. My suggestion, if you are bent on
  891.          diverging from the Turbo standard, is to create a special unit
  892.          called TP_COMPAT (or something like that) which contains clones of
  893.          some of the things that are in Borland Pascal. I believe that
  894.          source code compatibility with Borland Pascal is vital to the
  895.          acceptance of an PC Pascal. This is one reason for example, why
  896.          StonyBrook Pascal+ has a much larger market share than other
  897.          "real" Pascal implementations (such as TopSpeed, Metaware, and
  898.          Salford).
  899.  
  900.          These are just some suggestions. It is obviously up to you to do
  901.          as you think best. Now, for some of my other observations.
  902.  
  903.          1. The way of declaring function prototypes which import
  904.          from DLLs - you have to put a ":" before the DLL's name.
  905.          Turbo uses ";". Is there any reason why the two cannot be
  906.          accepted by the compiler?
  907.  
  908.          Also, the compiler chokes when it comes across the word
  909.          "FAR". Can it not just ignore it? (at least if you provide
  910.          a Turbo compatibility mode, it should just ignore it).
  911.  
  912.          2. There is a BEEP on compiler errors. The beep is annoying.
  913.          Can you not provide an option for disabling it?
  914.  
  915.          3. With the Reset() and ReWrite() procedures, a second argument
  916.          is necessary. This will throw a lot of Turbo Pascal programs.
  917.          Could the second argument be optional? (I appreciate that this
  918.          might be a very difficult thing to achieve - it is not that
  919.          important).
  920.  
  921.          4. The word "ABSOLUTE" is not recognised. Can the compiler just
  922.          ignore it, instead of giving an error?
  923.  
  924.          5. With the Halt() procedure, an argument is necessary. Does this
  925.          need to be so?
  926.  
  927.          6. The letter "@" is not allowed for specifying the address of
  928.          a variable or a procedure. Maybe you can implement this.
  929.  
  930.          7. "Set of Char" constants are not accepted;
  931.          e.g.
  932.          Const
  933.          Fred : Set of Char =  ['F','r','e','d'];
  934.  
  935.          Is there any reason why this is not acceptable?
  936.  
  937.          8. Type checking: when a string is entered into a "byte"
  938.          variable, there is no run-time error - it just converts into
  939.          garbage.
  940.  
  941.          9. Missing types: e.g. Reals.
  942.  
  943.          I appreciate that Speed/2 is still in early beta - and this is
  944.          why I am taking the time to file this report. The product is
  945.          already very good, and seems to be the most promising Pascal
  946.          compiler for OS/2. It can obviously be improved, and this is my
  947.          point. Catering for the zillions of Turbo Pascal programmers is
  948.          one way of getting yourself an instant large market, into
  949.          which Borland seems to have no intention of entering. If all the
  950.          old DOS Turbo Pascal programs can be converted into 32-bit OS/2
  951.          programs by simple recompiling, or with only minor changes to the
  952.          source code (e.g., those which can be catered for by a few IFDEFs)
  953.          then the sky is the limit.
  954.  
  955.          This is all obviously on the assumption that you *do* want to
  956.          cater for Turbo Pascal programmers. This is probably a
  957.          presumptuous idea on my part, especially since Turbo Pascal
  958.          is arguably not Pascal at all (more like Modula 2). If I am wrong
  959.          and you are not concerned about catering for Turbo Pascal
  960.          programmers, then you can probably ignore most of the observations
  961.          I have made above.
  962.  
  963.          The Chief
  964.          Dr. Abimbola Olowofoyeku  (The African Chief)
  965.          Keele University, England (and The Great Elephant)
  966.          Email: laa12@keele.ac.uk      or,  chief@mep.com
  967.          Voice: +44 782 621111              Fax  : +44 782 583228
  968.          "As for the wheels, it was said to them in my hearing, 'O Wheel.'"
  969.  
  970. Answer:
  971.        You're right. Turbo Pascal Compatibility is very important to me.
  972.        Thank you for your hints !
  973.  
  974.        1. The Compiler accepts now both ';' and ':' before the DLL's
  975.           name when importing function prototypes from DLL's.
  976.           The keywords "FAR" and "NEAR" are now ignored.
  977.        2. Now there is an option in the IDE to disable beeps.
  978.        3. The Reset and Rewrite Procedures are now Borland compatible.
  979.        4. The keyword "ABSOLUTE" is not implemented. Programs written
  980.           with this keyword must be rewritten because in OS/2 a variable
  981.           cannot have an absolute position (Protected mode uses virtual
  982.           memory).
  983.        5. The "Halt" procedure is now Borland compatible.
  984.        6. On my System the "@" operator works fine. Please send the program
  985.           that caused the error !
  986.        7. Set constants will be extended in future betas
  987.        8. OOPS. This is terrible. I've corrected it.
  988.        9. Real types (REAL,DOUBLE,EXTENDED) are now supported.
  989.  
  990. ----------------------------------------------------------------------------
  991. ----------------------------------------------------------------------------
  992.  
  993. Question:
  994.          Folgendes Programm sollte von jedem 32-Bit-Compiler problemlos
  995.          geschluckt werden:
  996.          ------------------
  997.          PROGRAM BigMem;
  998.  
  999.          CONST
  1000.             theSize=100000;
  1001.  
  1002.          VAR
  1003.             MyArray:Array[1..theSize] OF Byte;
  1004.             Count:LongInt;
  1005.  
  1006.          BEGIN
  1007.              FOR Count := 1 TO theSize DO
  1008.              MyArray[Count] := 3;
  1009.              WriteLN('Fertig!')
  1010.          END.
  1011.          --------------------
  1012.  
  1013.          Dummerweise verabschiedet sich der Compiler hinter dem Zugriff
  1014.          auf das Array. Macht man das Array kleiner als 64 KB, so
  1015.          funktioniert es.
  1016.  
  1017.          Ich bin Programmierer bei einer kleinen Computerfirma in der Nähe
  1018.          von Münster und arbeite dort an einem Projekt
  1019.          (Bildübertragungssystem auf ISDN-Basis) in Borland Pascal unter
  1020.          DOS, das unter einem echten Multitaskingsystem wie OS/2
  1021.          deutlich besser laufen würde. Daher habe ich sehr großes Interesse
  1022.          daran, möglichst bald eine brauchbare Version dieses Compilers
  1023.          in die Hand zu bekommen. Ich würde mich deshalb gerne als Tester
  1024.          für weitere Betaversionen zur Verfügung stellen.
  1025.  
  1026.          Sie erreichen mich tagsüber bei ruc Computer/Presence Technology,
  1027.          Sendenhorster Straße 32, 48312 Drensteinfurt, Tel. 02508-9001
  1028.  
  1029.          Ciao, Matthias
  1030.          ----
  1031.          Matthias Heidbrink
  1032.          Pastorsesch 35
  1033.          48159 Münster
  1034.          Germany
  1035.          Tel. +49-251-216188
  1036.          E-Mail: Matthias_Heidbrink@ms.maus.de
  1037.          or mh@ms3.maus.westfalen.de
  1038.  
  1039. Answer:
  1040.        Das Problem ist in der neuen Beta III behoben.
  1041.        Wie auch immer: Da SPEED-Pascal/2 ALLE Variablen mit festen Werten vor-
  1042.        belegt (0 oder sonst einen sinnvollen Wert) und mit in das EXE
  1043.        File schreibt, ist es nicht sinnvoll ein größeres Array als globale
  1044.        Variable zu definieren. Das Ergebnis wäre eine immens große EXE Datei
  1045.        und eine inakzeptable Compiliergeschwindigkeit. Viel eleganter ist
  1046.        es das Array als dynamische Variable zu vereinbaren etwa wie folgt:
  1047.  
  1048.        PROGRAM BigMem;
  1049.  
  1050.        CONST
  1051.             theSize=100000;
  1052.  
  1053.        TYPE
  1054.             TMyArray=Array[1..theSize] OF Byte;
  1055.  
  1056.        VAR
  1057.             MyArray:^TMyArray;
  1058.             Count:LongInt;
  1059.  
  1060.        BEGIN
  1061.            New(MyArray);
  1062.            FOR Count := 1 TO theSize DO MyArray^[Count] := 3;
  1063.            Dispose(MyArray);
  1064.            WriteLN('Fertig!')
  1065.        END.
  1066.  
  1067.        Damit nutzen Sie den Heap von Speed-OS/2 und das Limit ist 512 MB !
  1068.  
  1069. ----------------------------------------------------------------------------
  1070. ----------------------------------------------------------------------------
  1071.  
  1072.  
  1073. Question:
  1074.         Das folgende Programm erzeugte einen
  1075.         ==>Fatal compiler error:Internal error in:14,1 (No more registers)
  1076.  
  1077.         ------snip------snip------snip------snip------snip
  1078.         program test1;
  1079.  
  1080.         function factorial(n:integer):integer;
  1081.         var e,i:integer;
  1082.         begin
  1083.              e:=1;
  1084.              for i:=2 to n do e:=e*i;
  1085.              factorial:=e;
  1086.         end;
  1087.  
  1088.         function Binomial(n,k:integer):integer;
  1089.         var tmp1 : integer;
  1090.         begin
  1091.              Binomial:=factorial(n) div (factorial(k)*factorial(n-k));
  1092.         end;
  1093.  
  1094.  
  1095.         begin
  1096.              writeln(Binomial(4,2));
  1097.         end.
  1098.  
  1099.         ------snip------snip------snip------snip------snip
  1100.         Erst als ich die Zeile 14 in
  1101.         tmp1:=factorial(k)*factorial(n-k);
  1102.         Binomial:=factorial(n) div tmp1;
  1103.  
  1104.         geändert hatte, gelang die Compilation fehlerfrei.
  1105.  
  1106.         ================================================================
  1107.  
  1108.         Es schien mir, daß der Datentyp set noch nicht implementiert ist.
  1109.         Jedenfalls habe ich kein einziges Programm, das Mengen benutzt zum
  1110.         laufen bekommen.
  1111.  
  1112.         Des weiteren fiel mir auf, daß der new-operator total anders als in
  1113.         TurboPascal funktioniert. Ich kenne mich mit Standard-Pascals nicht
  1114.         besonders gut aus aber es wäre schon schön, wenn auch die
  1115.         Methode von TP unterstützt würde, da die meisten User von
  1116.         Speed-Pascal doch früher sicher in TP programmiert haben (ich
  1117.         jedenfalls).
  1118.  
  1119.         Oops... So ebend bin ich beim Schreiben der mail durch eine
  1120.         allgemeine Schutzausnahme unterbrochen worden
  1121.         Sie wurde durch ein kleines SpeedPascal-Programm ausgelöst. Das
  1122.         beste wird sein, ich schicke es gleich mal mit:
  1123.  
  1124.         -----snip-----snip-----snip-----snip-----snip
  1125.         program test2;
  1126.  
  1127.         var F:text;
  1128.  
  1129.         begin
  1130.             assign(f,'test2.txt');
  1131.             rewrite(f, 128);
  1132.             writeln(f, 'Das ist ein kleiner Test');
  1133.             close(f);
  1134.         end.
  1135.         -----snip-----snip-----snip-----snip-----snip
  1136.  
  1137.         Ich weiß zwar nicht, wozu der zweite Parameter da ist (in TP ist es
  1138.         die Recordsize --die ist aber nur bei untypisierten Dateien
  1139.         zulässig) aber deshalb muß ja das System nicht gleich so brutal
  1140.         abstürzen.
  1141.         Wie auch immer, mit rewrite(f,1) hat es dann geklappt.
  1142.         Typisierte Files (außer Textfiles) scheinen ja wohl auch noch nicht
  1143.         implementiert zu sein (oder wie muß ich die vereinbaren?).
  1144.  
  1145.         Zum Schluß noch eine allgemeine Anfrage: Gibt es eine Mailingliste,
  1146.         auf der ich den Fortschritt der Bugfixes bzw der eingereichten Bugs
  1147.         mitverfolgen kann? Ich habe nämlich leider keinen
  1148.         Compuserve-Zugang.
  1149.  
  1150.         Das wars...
  1151.  
  1152.         Grüße aus Dresden
  1153.  
  1154.  
  1155.         --
  1156.         Christian Pech                     Telephone: (0351)-4030408
  1157.         pech@virgo.sax.de                  Address:   Südhöhe 87
  1158.         pech@rmhs1.urz.tu-dresden.de       01217 Dresden
  1159.         (pech@pandora.sax.de)
  1160.  
  1161.  
  1162. Answer:
  1163.        OOPS !
  1164.        Beide Programme laufen unter der neuen Beta III ohne Probleme.
  1165.        Der zweite Parameter in Reset/Rewrite ist tatsächlich die Recordgröße
  1166.        und jetzt optional. Wird er bei Textdateien trotzdem angegeben
  1167.        wird er ignoriert.
  1168.        Typisierte Dateien (außer Text) sind zur Zeit nicht implementiert.
  1169.        Leider habe ich selbst auch keinen Compuserve Zugang, alle Anfragen
  1170.        laufen über das Magazin "toolbox". Eine komplette Liste der in
  1171.        dieser Version behobenen Bugs finden Sie jedoch in der Datei
  1172.        'BUGREPOR.GER'.
  1173.  
  1174. ----------------------------------------------------------------------------
  1175. ----------------------------------------------------------------------------
  1176.  
  1177.  
  1178. Question:
  1179.          To:DMV-Verlag
  1180.          Redaktion toolbox
  1181.          z.Hd. Herrn R. Nurnberger
  1182.          Fax: +49-8121-769-199
  1183.  
  1184.          From Soren Ager
  1185.          Kronprinsensgade 88 2tv
  1186.          6700 Esbjerg
  1187.          Denmark
  1188.  
  1189.          Hi!
  1190.  
  1191.          I have downloaded your "SPEED-Pascal/2 for OS/2 2.1", it is
  1192.          looking good, I am looking forward to the finished program!
  1193.  
  1194.          During my testing of the compiler, I found the follwing things
  1195.          that is possible in Turbo Pascal but not in SPEED-Pascal/2:
  1196.  
  1197.          1) Can't have local typed CONST's
  1198.  
  1199.          2) Can't have typed CONST's like:
  1200.          CONST
  1201.               Hex : Array[0..15] of Char = '01234567890ABCDEF';
  1202.  
  1203.          3) Can't typecast in Write/WriteLn:
  1204.          VAR
  1205.             p : Pointer;
  1206.  
  1207.          BEGIN
  1208.               WriteLn(Word(p^))
  1209.          END.
  1210.  
  1211.          4) Must have a PROGRAM statement
  1212.  
  1213.          5) There is no Randomize and Random
  1214.  
  1215.          6) There is no XOR operator
  1216.  
  1217.          7) Can't use ranges with IN:
  1218.          IF Ch IN ['A'..'Z'] then WriteLn('Uppercase char');
  1219.  
  1220.          8) Can't use include files:
  1221.          {$I INCLUDE.PAS}
  1222.  
  1223.          9) Can't use {$ELSE}
  1224.  
  1225.          Greetings
  1226.          Soren Ager
  1227.  
  1228. Answer:
  1229.        1. Local typed CONST's are currently not implemented
  1230.        2. statement currently not implemented
  1231.        3. statement currently not implemented
  1232.        4. A PROGRAM statement is a "MUST" in Speed
  1233.        5. Randomize and Random are now available
  1234.        6. The XOR operator is now available
  1235.        7. Ranges with IN operator are now possible
  1236.        8. Include files are currently not implemented
  1237.        9. {$ELSE},{$DEFINE},{$IFDEF} and so on are now included
  1238.  
  1239.  
  1240. ----------------------------------------------------------------------------
  1241. ----------------------------------------------------------------------------
  1242.  
  1243.  
  1244. Question:
  1245.          Thanks for your note regarding MVS features in Pascal.
  1246.          The features in question are in general not operating system or
  1247.          hardware specific.  They are language extensions that IBM added
  1248.          to VS Pascal to make it a more robust programming language.
  1249.          For example, the following reserved words have been added:
  1250.          ASSERT
  1251.          CONTINUE
  1252.          DEF
  1253.          LEAVE
  1254.          OTHERWISE
  1255.          RANGE
  1256.          REF
  1257.          RETURN
  1258.          SPACE - allows a data structure to start anywhere on a stream of
  1259.          bytes
  1260.          STATIC
  1261.          XOR
  1262.  
  1263.          There are numerous additional functions, and some additional data
  1264.          types, particularly for string handling.
  1265.  
  1266.          For complete details, you might try finding IBM manual SC26-4320,
  1267.          "VS Pascal Language Reference".  (If you can't find a copy, let me
  1268.          know and I'll see if I can find a copy.  It may be easier for me
  1269.          to order a copy here in the U.S.)
  1270.  
  1271.          Metaware's now discontinued Pascal has an optional Pascal VS mode.
  1272.          We have considered purchasing a license for the OS/2 run-time
  1273.          library source, but for several reasons this is not an attractive
  1274.          option.  We would much prefer to purchacse a compiler that is
  1275.          actively being maintained and developed.
  1276.  
  1277.          In addition to Pascal VS syntax, we would like a compiler that:
  1278.           - generates 32 bit flat memory model code
  1279.           - is usable with a symbolic debugger
  1280.           - is usable with an execution profiler for performance analysis
  1281.           - and of course runs under OS/2
  1282.  
  1283.           Sandy
  1284.  
  1285.  
  1286. Answer:
  1287.         I'm really sorry... But going to VS-Pascal would destroy parts of
  1288.         the Borland Pascal compatibility since lots of new keywords would
  1289.         be nessesary.
  1290.         But some hints for porting your VS-Pascal Sources to SPEED-Pascal/2:
  1291.  
  1292.         * REF        replace with VAR and locate in INTERFACE section
  1293.         * STATIC     replace with VAR
  1294.         * OTHERWISE  replace with ELSE
  1295.         * RETURN     replace with EXIT
  1296.         * ASSERT     replace with IF <Expression> THEN RunError(<Nr>);
  1297.         * CONTINUE   use labels instead
  1298.         * LEAVE      use labels instead
  1299.         * XOR        is now included within SPEED-Pascal
  1300.         * VALUE      replace with CONST <Var>:<Type>=<Value>
  1301.  
  1302.        It's obvious that most of the changes can be made automatically by
  1303.        simply replacing the keywords. This can be done with the IDE
  1304.        command "Replace".
  1305.  
  1306.        In the current beta III the compiler supports partial the IPMD
  1307.        debugger. The "partial" is because I don't have the complete
  1308.        description of the IPMD debugger format (32 Bit codeview format)
  1309.        Does anybody know more about this ????????
  1310.  
  1311. ----------------------------------------------------------------------------
  1312. ----------------------------------------------------------------------------
  1313.  
  1314.  
  1315. Question:
  1316.         If your product is making millions every year, then an internet
  1317.         address is a good idea. If not, it is not worth it. The internet
  1318.         is full of wierdos, and all they want is something free.
  1319.  
  1320.         Now, about the "serious" bug: I have just discovered that the
  1321.         TSearchRec record used for FindFirst() and FindNext() has some
  1322.         rather big problems.
  1323.         1. there is no way to get the name of the file: there is something
  1324.         called "achName", which is presume is the name of the file, but this
  1325.         is declared as an array[0..255] of BYTE (which does not make any
  1326.         sense to me). I changed it to an array[0..255] of CHAR - and that is
  1327.         a bit better, but it leaves strange characters in the filename, and
  1328.         loses the first character of the filename.
  1329.  
  1330.         2. as far as "Turbo" compatibility goes, the TSearchRec record is
  1331.         all wrong;
  1332.         In Turbo, you have a field called "name" - in Speed, it is called
  1333.         "achName", and declared in a strange way. This incompatibility in
  1334.         the name of the field ("name" vs "achName" seems to be gratuitous
  1335.         and unnecessary). Secondly, in Turbo, you have a field called
  1336.         "attr". In Speed, it is called "attrFile" - why this unnecessary
  1337.         difference?
  1338.  
  1339.         3. The IDE and its editor have many bugs - I suppose you are aware
  1340.         of this.
  1341.         For example, the Del key does nothing, and you cannot use
  1342.         backspace to scroll back up a line; pressing PgDn often causes the
  1343.         IDE to terminate without warning.
  1344.         4. But more importantly, the compiler  *should* stop parsing the
  1345.         source code when it reaches an "End."
  1346.         The Speed compiler does not - this causes problems for people like
  1347.         me who like to write things beyond the "End." line. Also, the editor
  1348.         does many strange things to a file when you use it to save a file.
  1349.         I have resorted to using another editor for this purpose.
  1350.  
  1351.         I will write to you again when I have more reports.
  1352.  
  1353.         Regards.
  1354.         The Chief
  1355.         Dr. Abimbola Olowofoyeku  (The African Chief)
  1356.         Keele University, England (and The Great Elephant)
  1357.         Email: laa12@keele.ac.uk      or,  chief@mep.com
  1358.         Voice: +44 782 621111              Fax  : +44 782 583228
  1359.         --------------------------------------------------------------------
  1360.          "As for the wheels, it was said to them in my hearing, 'O Wheel.'"
  1361.  
  1362. Answer:
  1363.        Hi Chief !
  1364.        I'm sorry but I didn't made money with Speed-OS/2 till today. But
  1365.        I hope when the product is finished I'll make millions and millions
  1366.        (HAHAHA).
  1367.        1.  OOPS. This is strange, but it's because I copied the format
  1368.            of the TSearchRec from the OS/2 Toolkit. In the new version
  1369.            the TSearchRecord is compatible to Borland !
  1370.        2.  See above
  1371.        3.  I hope these problems are blasted away in the new Beta III IDE !
  1372.        4.  Keep on writing your comments beyound the "End.". It now
  1373.            will work fine !
  1374.  
  1375. ----------------------------------------------------------------------------
  1376. ----------------------------------------------------------------------------
  1377.  
  1378.  
  1379. Question:
  1380.          Anregungen zu Speed386 fur OS/2
  1381.          Dietmar Mair 100417,2715
  1382.  
  1383.          Anregungen zu Speed-Pacal/2 für OS/2
  1384.          Ich habe eine Version Deines Compilers durch die Zeitschrift TOOLBOX
  1385.          erhalten.
  1386.  
  1387.          Bei Testen ist mir folgendes aufgefallen.
  1388.          1. Bei der Programmierung von Objekten sollt es moglich sein:
  1389.             a) auch Destruktoren als "virtual" zu deklarieren
  1390.             b) innerhalb einer Objekthirarchie an Methoden mit gleichem Namen
  1391.             unterschiedliche Parameter zu Ubergeben
  1392.  
  1393.          2. Wenn man beim Durchblattern eines Dokumentes auf die Pfeile fur
  1394.          Rollen Klickt und die Maustaste festhalt wird offensichtlich die
  1395.          Zeilennummer inkrementiert. Die Bildschirmanzeige wird aber erst
  1396.          aktualisiert, wenn die Maustaste  wieder losgelassen wird. Das
  1397.          erschwert die Suche nach bestimmten Textpassagen erheblich. Die
  1398.          zustandige Methode sollte bei jedem Durchlauf auch eine Message
  1399.          senden, die das Aktualisieren der Anzeige bewirkt.
  1400.          Dadurch wurde der Bildschirm dann Zeilenweise gerollt.
  1401.  
  1402.          3. Der Compiler gibt bei Fehlermeldungen teilweise falsche Verweise
  1403.          auf die Textstelle im Quelltext zuruck. (meist eine Zeile tiefer und
  1404.          einige Spalten versetzt)
  1405.  
  1406.          Grundsatzlich finde ich den Compiler sehr gelungen. Ich freue mich
  1407.          speziell daruber, das sich jemand um die Entwicklung eines
  1408.          Pascal- Compilers  für OS/2 kümmert.
  1409.  
  1410. Answer:
  1411.          1.
  1412.          a) Destruktoren sind nun auch virtuell möglich
  1413.          b) Dies ist jetzt implementiert, die Methoden dürfen aber nicht
  1414.             als VIRTUAL definiert sein (analog zu Turbo Pascal)
  1415.          2. In der Beta III IDE ist dieses Problem behoben.
  1416.          3. Dies ist in der Beta III behoben
  1417.  
  1418.  
  1419. ---------------------------------------------------------------------------
  1420. ---------------------------------------------------------------------------
  1421.  
  1422. Question:
  1423.          Soren Ager 76560,272
  1424.          Jörg Braun
  1425.          Hi Jörg 1
  1426.  
  1427.          I have now played a bit more with the program, I have found the
  1428.          following additional Things:
  1429.  
  1430.          IDE:
  1431.          ----
  1432.  
  1433.          - When creating a new file, a lot of spaces is added to the end
  1434.            of the file - this gives errors when trying to compile the
  1435.            new program
  1436.          - Would be nice if lines could be longer than 127 characters
  1437.          - F6 jumps to windows that is minimized
  1438.  
  1439.          Pascal compiler
  1440.          ---------------
  1441.  
  1442.          - It is not possible to write variables to text files:
  1443.            PROGRAM test;
  1444.            VAR
  1445.               Out:TEXT;
  1446.               a:LONGINT;
  1447.            BEGIN
  1448.                 a:=1;
  1449.                 Assign(Out,'Test.Log');
  1450.                 Rewrite(Out,1);
  1451.                 Writeln(Out,a);   <<- Gives compiler error
  1452.                 Close(Out);
  1453.            END;
  1454.          - It would be nice if it was possible to use Dynamic methods - then
  1455.            Object-PM could be changed to look more like OWL:
  1456.             PROCEDURE WMCreate(VAR Msg:TMessage);VIRTUAL wm_First+wm_Create;
  1457.  
  1458.          Resource Compiler
  1459.          -----------------
  1460.  
  1461.          - Can't handle TAB characters in the .RC file
  1462.          - Can't compile .RC files created with Borland Resource workshop
  1463.            for PM
  1464.  
  1465.          Greetings
  1466.  
  1467.  
  1468. Answer:
  1469.          At first thank you for your intensive bug reporting. It seems
  1470.          you are dealing a lot of time with SPEED-Pascal/2.
  1471.          Now to your bugs:
  1472.  
  1473.          IDE:
  1474.          ----
  1475.  
  1476.          - The problem of the spaces at the end of files is now corrected.
  1477.            I changed the editor a little bit. Hope that I didn't built
  1478.            in more bugs...
  1479.          - Lines can now be up to 250 characters long (that should be
  1480.            always enough)
  1481.          - I think that F6 jumps to minimized windows isn't too critical.
  1482.            It also can be a nice feature when having lots of windows
  1483.            minimized - so I didn't change that.
  1484.  
  1485.          Pascal Compiler
  1486.          ---------------
  1487.  
  1488.          - In the current Beta III variable writes (both real and fixed
  1489.            numbers) is now possible
  1490.          - OOPS. Dynamic methods in SPEED-PASCAL/2 ? This WAS a nice problem
  1491.            and I spend a whole night implementing that - but it's done.
  1492.  
  1493.          Resource Compiler
  1494.          -----------------
  1495.  
  1496.          - The problem of TAB characters is corrected in the new BETA III
  1497.          - For creating resources use the SPEED-Resource Editor. Although
  1498.            it isn't completed it will be in the Final release.
  1499.  
  1500.  
  1501. --------------------------------------------------------------------------
  1502. --------------------------------------------------------------------------
  1503.  
  1504. Question:
  1505.          Hi Jörg !
  1506.          Thanks for the Beta Version of Speed-Pascal V1.0 for OS/2 (Sept 94)
  1507.          it is looking great !
  1508.  
  1509.          After playing around a bit with the program, I have found the
  1510.          following things:
  1511.  
  1512.          Install program
  1513.          ---------------
  1514.  
  1515.          - Can't install in 'C:\OS2PROG\SPEED' IF 'C:\OS2PROG' don't exist
  1516.  
  1517.          IDE
  1518.          ---
  1519.  
  1520.          - Reserved words found in comments are highlighted
  1521.          - In the Search/Browse globals dialog the columns are not aligned
  1522.          - IF I load the included INSTALL.PAS file and search for
  1523.            'InstallDir' and chooses Search again 2 times, it will write
  1524.            an 'a' before the found text. Using Search again hereafter will
  1525.            not find anything, it just highlights randomly.
  1526.          - The following keystrokes are not supported:
  1527.             Ctrl+Left/Right Arrow   =Next/Previous word
  1528.             Ctrl+Home/End           =Top/Bottom of text
  1529.             Ctrl+Y                  =Delete line
  1530.             Ctrl+K R                =Read block from file
  1531.             Shift+Arrows            =Mark text
  1532.          - SHL in assembler block are highlighted
  1533.          - When marking lines with Ctrl+K B and Ctrl+K K one line too much
  1534.            is highlighted
  1535.          - If you have more than one file open and you minimize the whole
  1536.            editor the windows will be tiled when you brings the editor to
  1537.            the front again.
  1538.          - When doing a search the found text is copied into the clipboard
  1539.          - When using Shift+DEL and you have only marked part of a line
  1540.            the whole line is deleted
  1541.  
  1542.          Pascal compiler
  1543.          ---------------
  1544.  
  1545.          - Can't have the same procedure/function name in inherited objects
  1546.            without being VIRTUAL
  1547.  
  1548.            TYPE
  1549.                Base=OBJECT
  1550.                           PROCEDURE Test;
  1551.                     END;
  1552.                New=OBJECT(Base)
  1553.                           PROCEDURE Test;
  1554.                    END;
  1555.          - There is no XOR operator
  1556.          - Can't use ranges with IN: IF Ch IN ['A'..'Z'] THEN Upper:=TRUE;
  1557.          - Turbo Pascal defines a DLL (Library) like a program, where
  1558.            Speed defines it as a unit (requering INTERFACE etc.)
  1559.          - DESTRUCTORS can't be virtual
  1560.          - It would be nice if it was possible to call 16 Bit DLL's
  1561.            (VIO.MOU,KBD etc)
  1562.          - The reversing of parameters to call DLL's are very confusing,
  1563.            especialy if you are comparing your code to some C code or
  1564.            API documentation. I think it would be smarter either to
  1565.            always just reverse the parameters or make two IMPORT
  1566.            keywords (IMPORT/IMPORTCCALL) or make another keyword to use
  1567.            after the definition of the procedure
  1568.            FUNCTION DosBeep(F,D:LONGINT):LONGWORD:'DOSCALLS' Index 286;CCALL;
  1569.          - Can't use include files
  1570.          - No support for variant records
  1571.              VRec=RECORD
  1572.                        CASE Integer OF
  1573.                          0:(i:Integer);
  1574.                          1:(a,b:BYTE);
  1575.                   END;
  1576.          - It would be nice if the compiler could be more Turbo compatibe
  1577.            this would allow us to use some of our old routines with minimal
  1578.            changes ({$IFDEF SPEED}) in both DOS and OS/2 programs. As it is
  1579.            now we have to make a copy of the files, and change it - as there
  1580.            is so many Speed does differently.
  1581.  
  1582.          Greetings
  1583.          Soren
  1584.  
  1585. Answer:
  1586.          Oh - you again ? I'm very impressed of your bug reporting !
  1587.  
  1588.          Install program
  1589.          ---------------
  1590.  
  1591.          - The bug is now corrected since the Installation program
  1592.            was partial rewritten.
  1593.  
  1594.          IDE
  1595.          ---
  1596.  
  1597.          - The highlighting of reserved words in comments and ASM statements
  1598.            will probably be removed in the Final version.
  1599.          - The aligning of the Symbols in the Search/Browse dialog will
  1600.            probably be removed in the Final version
  1601.          - The problem when searching words is corrected
  1602.          - The following keystrokes are now additionally available:
  1603.               Ctrl+Left/Right arrow    = Next/Previous word
  1604.               Ctrl+Home/End            = Top/Bottom of text
  1605.               Ctrl-Y                   = Delete line (same a Ctrl+Z)
  1606.               Shift+Arrows             = Select text
  1607.          - The problem when selecting text is corrected in the new BETA III.
  1608.          - The windows are no longer tiled when sizing the window. The
  1609.            reason for doing so was that you have to tile the windows after
  1610.            some sizing operations because you havn't access to the windows
  1611.            since they are invisible or partial covered by the Application
  1612.            window. Now this problem is here again !
  1613.          - The text is not copied to the OS/2 clipboard, only to the
  1614.            Editor's internal clipboard. I think this isn't too critical.
  1615.          - The problem using Shift+Del will probably be corrected in the
  1616.            final version of SPEED-Pascal/2.
  1617.  
  1618.          Pascal Compiler
  1619.          ---------------
  1620.  
  1621.          - Inherited functions (cant be VIRTUAL) are now supported and
  1622.            allow to define a method with the same name and the same
  1623.            or different parameterlist as it is defined in the parent
  1624.            object(s).
  1625.          - The XOR operator is now supported
  1626.          - The ranges in the IN operator are now supported
  1627.          - The definition for a DLL is now Turbo Pascal compatible.
  1628.          - Destructors can now be VIRTUAL.
  1629.          - Support for 16 Bit DLL's is probably part of the final version.
  1630.          - The reversing of parameters when calling DLL's is a result of
  1631.            the implementation of the OS/2 DLL's. Since all 32 Bit OS/2
  1632.            DLL's use C-calling convention there is no way (or ?) to call
  1633.            these functions as Pascal functions.
  1634.            The problem is that C-Functions expect the parameters from right
  1635.            to left where Pascal does it from left to right. Also a C-
  1636.            Function does not clean up the stack as Pascal does.
  1637.            The only solution I see is to pack the DLL functions into a
  1638.            SPEED-Library and there convert the parameters (means repushing
  1639.            them onto the stack - speed slows down). These libraries will
  1640.            be part of the Final version.
  1641.          - Sorry. There are no plans to implement Include files yet.
  1642.          - Variant records are now supported but only in the from
  1643.             CASE <Name> OF, where <Name> is a type name.
  1644.          - I always try to make Speed more Turbo compatible. Help me and
  1645.            find out more things that are different since I cannot test
  1646.            anything ! Thank you for your interest !
  1647.  
  1648.  
  1649. -----------------------------------------------------------------------------
  1650. -----------------------------------------------------------------------------
  1651.  
  1652.  
  1653. Question:
  1654.          From: Christian Pech <pech@virgo.sax.de>
  1655.          Hi there...
  1656.  
  1657.          Erst mal vielen Dank für die neue Beta. Sie funktioniert nun
  1658.          schon sehr viel besser als die erste Demo (ich habe einen ersten
  1659.          BP-2000-Zeiler von mir zum compilieren gebracht (leider noch
  1660.          nicht zum Laufen)).
  1661.  
  1662.          Hier nun meine neuesten Erfahrungen:
  1663.  
  1664.          1.) Das folgende Programm bringt den Compiler durcheinander (IDE
  1665.              verabschiedet sich kommentarlos):
  1666.  
  1667.              program test;
  1668.  
  1669.              type ptest=^test;
  1670.                   test=integer;
  1671.  
  1672.              var  a:ptest;
  1673.  
  1674.              begin
  1675.                   new(a);
  1676.                   dispose(a);
  1677.              end.
  1678.  
  1679.              Das Problem hängt nach meinen Erfahrungen mit dem Namen des
  1680.              Programmes zusammen. Es tritt nur dann auf, wenn es eine
  1681.              Typ-Vereinbarung der Form <TypName>=^<ProgName> gibt.
  1682.              Der Hänger passiert beim ersten Zugriff auf eine Variable
  1683.              dieses Typs (in diesem Fall bei new(a)).
  1684.  
  1685.          2.)
  1686.              Variantenrecords funktionieren nicht. Das ist nicht allzu
  1687.              störend, da ich sie in normale records umwandeln konnte
  1688.              (Typumwandlungen via Variantenrecords sind sowieso ätzend)
  1689.  
  1690.          3.)
  1691.              const x:Real=0.1; funktioniert nicht.
  1692.  
  1693.          4.)
  1694.              Read funktioniert nicht auf text Dateien
  1695.  
  1696.          5.)
  1697.              VAL finktioniert nicht mit Real Variablen. In der Hilfe steht
  1698.              das zwar drinnen; Das läßt mich aber befürchten, daß das nicht
  1699.              mehr geändert werden soll (Bitte Bitte auch für Real
  1700.              implementieren !).
  1701.  
  1702.          6.)
  1703.              ABS hat noch einen Bug dazu bekommen. Es will nicht mit Real
  1704.              Zahlen (der Compiler meint, daß Real kein numerischer Typ ist).
  1705.  
  1706.          Soweit erstmal zum Compiler, nun zur IDE:
  1707.  
  1708.          1.)
  1709.              Der Replace Dialog reagiert wunderlich auf TAB (erst nach
  1710.              zweimaligen Drücken von TAB ist der Cursor im Replace with
  1711.              Feld).
  1712.  
  1713.          2.)
  1714.              Steht beim Suchen nach einem String dieser String in der
  1715.              aktuellen Zeile (nach dem Cursor), so wird er nicht gefunden.
  1716.              Das ist besonders lästig, wenn der Suchbegriff in einer Zeile
  1717.              mehrmals auftritt.
  1718.  
  1719.          3.)
  1720.              Einigemale hat mir der Editor ein paar wunderliche Zeichen in
  1721.              meinen Quelltext hineingezaubert (z.B. irgendwo irgendeinen
  1722.              Buchstaben eingesetzt). Dieser Fehler war leider nicht
  1723.              reproduzierbar.
  1724.  
  1725.          4.)
  1726.              Daß Alt-F4 das aktuelle Editorfenster und nicht die IDE
  1727.              schließ würde ich als Bug bezeichnen, da im Kontextmenü
  1728.              die Tastenkombination eindeutig zum Schließen der IDE
  1729.              bestimmt ist.
  1730.  
  1731.          5.)
  1732.              Wenn mehrere Files geöffnet sind, ich die IDE zum Symbol
  1733.              verkleinere, ich dann die IDE wieder auf normale Größe
  1734.              bringe, sind alle Fenster so dargestellt, als hätte ich
  1735.              gerade 'Tile' aus dem 'Window' Menü ausgeführt.
  1736.  
  1737.          6.)
  1738.              Im RUN-Menü funktioniert der Punkt Parameters nicht
  1739.  
  1740.          Das wars für die IDE.
  1741.  
  1742.          Jetzt noch ein kleiner Bug unter 'was sonst noch passiert':
  1743.  
  1744.          1.)
  1745.              Beim PMEdit Beispiel sind im Tool Bar die Knöpfe zum
  1746.              Öffnen und Schließen von Dateien vertauscht.
  1747.  
  1748.          Nun noch einige Bemerkungen zu Sachen, die ich vermisst habe bzw.
  1749.          die ich mir wünsche:
  1750.  
  1751.          1.)
  1752.             Das Markieren von Text sollte auch mit SHIFT+Cursortasten
  1753.             funktionieren.
  1754.  
  1755.          2.)
  1756.             Wenn ich beim Öffnen einer Datei (in der IDE) das Verzeichnis
  1757.             wechsle, sollte das nicht das mit ChangeDir eingestellte
  1758.             Verzeichnis ändern. In meinem Verständnis fungiert das mit
  1759.             ChangeDir eingestellte Verzeichnis als Standardverzeichnis
  1760.             für alle File Dialoge. Kurz und bündig: Es sollte wie in der
  1761.             BP-IDE funktionieren.
  1762.  
  1763.          3.)
  1764.             Die Tastenkombination Strg-Pos1 (Springen zum Beginn der Datei)
  1765.             und Strg-Ende (Springen zum Ende der Datei) habe ich sehr
  1766.             vermißt.
  1767.  
  1768.          4.)
  1769.             Die IDE sollte eine Liste der geöffneten Dateien führen (wie
  1770.             bei BP-IDE; wird dort mit Alt-0 aufgerufen).
  1771.  
  1772.          5.)
  1773.             Im File Menü solltendie 5 zuletzt geöffneten Dateien direkt
  1774.             zur Auswahl stehen (wie bei WinWord z.B.)
  1775.  
  1776.          6.)
  1777.             Der aktuelle Zustand der IDE sollte speicherbar sein, damit
  1778.             man beim Öffnen der IDE nicht immer erst alle Quelldateien
  1779.             vom Hand öffnen muß.
  1780.  
  1781.          7.)
  1782.             Es wäre schön, wenn man nach dem Öffnen eines Projektes noch
  1783.             eine Möglichkeit hätte, einzelne bzw. alle Quelldateien
  1784.             dieses Projektes zu Öffnen (z.B. über eine Listbox, in der
  1785.             alle zum Projekt gehörigen Quelldateien aufgeführt sind).
  1786.  
  1787.          Das wars eigentlich auch schon...
  1788.  
  1789.          Wenn ich noch was finden sollte melde ich mich.
  1790.  
  1791.          Viele Grüße aus Dresden
  1792.                 Christian Pech (pech@virgo.sax.de)
  1793.  
  1794. Answer:
  1795.          Erstmal viele Grüße aus Chemnitz nach Dresden und vielen Dank
  1796.          für den ausführlichen Bug-Report.
  1797.  
  1798.          Nun zu den einzelnen Fehlern:
  1799.  
  1800.          1.)
  1801.             Die Konstruktion <TypName>=^<ProgName> funktioniert in der
  1802.             neuen Beta III.
  1803.  
  1804.          2.)
  1805.             Obwohl ich Typumwandlungen über Variantenrecords auch
  1806.             schrecklich finde sind Variantenrecords jetzt trotzdem
  1807.             implementiert, allerdings nur in der Form CASE <Name> OF,
  1808.             wobei <Name> ein Typname ist.
  1809.  
  1810.          3.)
  1811.             Typisierte Real Konstanten sind jetzt zulässig.
  1812.  
  1813.          4.)
  1814.             READ ist zur Zeit für Textdateien nicht implementiert.
  1815.             ReadLn funktioniert jedoch. Bis zur Vollversion (Jan/Feb '95)
  1816.             wird dieser Bug behoben sein.
  1817.  
  1818.          5.)
  1819.             VAL für Real Variablen wurde einfach "vergessen" und ist nun
  1820.             realisiert.
  1821.  
  1822.          6.)
  1823.             ABS sollte jetzt keinen Bug mehr haben, auch die früher
  1824.             gemeldeten Fehler wurden beseitigt.
  1825.  
  1826.          Nun zur IDE:
  1827.  
  1828.          1.)
  1829.             Der Replace Dialog verhält sich jetzt wir erwartet.
  1830.  
  1831.          2.)
  1832.             Das Suchen nach Strings wurde völlig überarbeitet und sollte
  1833.             jetzt funktionieren.
  1834.  
  1835.          3.)
  1836.             Diesen Fehler konnte ich nicht reproduzieren. Falls er nochmals
  1837.             auftaucht versuchen Sie bitte herauszufinden unter welchen
  1838.             Bedingungen (Anzahl der geöffneten Dateien, letzte
  1839.             Editoroperation). Diese Fehler sind im allgemeinen die
  1840.             "miesesten" weil schwer zu entdecken.
  1841.  
  1842.          4.)
  1843.             Dieser Bug wird in der Vollversion behoben sein.
  1844.  
  1845.          5.)
  1846.             Das 'Tile' der Fenster wurde deshalb eingebaut da es vorkommen
  1847.             kann das nach Größenänderungen der IDE eventuell einige Fenster
  1848.             nicht oder nur teilweise sichtbar sind (z.B. Titelleiste
  1849.             verdeckt). Da 'Tile' nach diesen Operationen nun entfernt ist
  1850.             tritt dieses Problem wieder auf (kann aber durch ein manuelles
  1851.             'Tile' behoben werden).
  1852.  
  1853.          6.)
  1854.             Der 'Parameters' Befehl ist nun aktiviert.
  1855.  
  1856.          'Was sonst noch passiert' ?
  1857.  
  1858.          1.)
  1859.             Der Fehler im PMEdit Beispiel ist behoben (Wer weiß wo ich
  1860.             da gerade meinen Kopf hatte...)
  1861.  
  1862.          Nun zu Ihren Anmerkungen:
  1863.  
  1864.          1.)
  1865.             Das Markieren von Text funktioniert nun auch mit SHIFT+Cursor-
  1866.             tasten.
  1867.  
  1868.          2.)
  1869.             Im Menü 'Options - Preferences - Editor' existiert ein
  1870.             Schalter der bestimmt, ob die IDE nach dem Öffnen einer
  1871.             Datei das Verzeichnis wechselt ('Change dir on open').
  1872.             Übrigens gibt es diesen Schalter auch in der BP-IDE...
  1873.  
  1874.          3.)
  1875.             Strg-Pos1 (Textbeginn) und Strg-End (Textende) funktionieren
  1876.             jetzt.
  1877.  
  1878.          4.)
  1879.             Die IDE führt nun analog zur BP-IDE eine Liste der geöffneten
  1880.             Dateien (auch über Alt-0 oder über Menü 'Window - List'
  1881.             aktivierbar).
  1882.  
  1883.          5.)
  1884.             Im File Menü stehen jetzt die 6 (!) zuletzt geöffneten Dateien
  1885.             direkt zur Auswahl, da nach meinen Erfahrungen mit der BP-IDE
  1886.             sowieso immer gerade die Datei fehlt die man gerade braucht...
  1887.  
  1888.          6.)
  1889.             Dies wird in der Vollversion verfügbar sein.
  1890.  
  1891.          7.)
  1892.             Leider gilt das gleiche wie unter Punkt 6...
  1893.  
  1894.