Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Hilfe bei Delphi-CRT-Unit für XE/2 (https://www.delphipraxis.net/172757-hilfe-bei-delphi-crt-unit-fuer-xe-2-a.html)

gammatester 21. Jan 2013 12:06

Delphi-Version: XE2

Hilfe bei Delphi-CRT-Unit für XE/2
 
Lieber XE/2-Benutzer,

ich würde mich über Mithilfe bei folgender Situation freuen:

Bei den Anpassungen von MPArith V1.24.23 für Delphi 17 / XE3 und Win64 mußte ich auch meine Delphi-CRT-Unit ändern. Leider ging das nur mit der Methode "Versuch und Irrtum" da selbst die relavanten Online-Hilfen vom Emba nur sagen, daß sie keine Information über das haben, was sie da programmiert haben: zB http://docwiki.embarcadero.com/Libra...xtRec.CodePage oder http://docwiki.embarcadero.com/Libra...Rec.MBCSLength. Zitat: "Embarcadero Technologies does not currently have any additional information. Please help us document this topic by using the Discussion page!"

Ist schon merkwürdig, daß sie User um Hilfe für Ihre Dokumentation bitten, es muß doch Specs und Programmierer dafür geben!

Hier die relevanten Abschnitte in CRT.PAS, fraglich sind die Teile mit {$ifdef TXTREC_CP}:
Delphi-Quellcode:
{$IFDEF CONDITIONALEXPRESSIONS}
  {$IF CompilerVersion >= 23.0}  {D16(XE2)+}
    {$DEFINE UNIT_SCOPE}
  {$IFEND}
  {$IF CompilerVersion >= 23.0}
    {$DEFINE TXTREC_CP}
  {$IFEND}
{$ENDIF}
//..
     fmInOut,
     fmOutput: begin
               OutputHandle := CreateFile('CONOUT$', GENERIC_READ or GENERIC_WRITE, FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, 0, 0);
               {$ifdef D6PLUS}
                 {Delphi 6 and above default to LF-only line breaks}
                 f.Mode := fmClosed;
                 SetLineBreakStyle(text(f), tlbsCRLF);
               {$endif}
               f.Handle := OutputHandle;
               f.Mode := fmOutput;
               if f.BufPtr=nil then begin
                 f.BufPtr := @f.Buffer;
                 f.BufSize := sizeof(f.Buffer)
               end;
               InitVideo;
               if (GetConsoleScreenBufferInfo(f.Handle, Info)) then begin
                 SetConsoleMode(f.Handle, 0);
                 f.InOutFunc := @CrtOutput;
                 f.FlushFunc := @CrtOutput;
                 f.CloseFunc := @CrtClose;
                 {$ifdef TXTREC_CP}
                   if f.CodePage = 0 then begin
                     if GetFileType(f.Handle) = FILE_TYPE_CHAR then begin
                       {f.Mode=fmOutput}
                       f.CodePage := GetConsoleOutputCP
                     end
                     else f.CodePage := DefaultSystemCodePage;
                   end;
                   f.MBCSLength := 0;
                   f.MBCSBufPos := 0;
                 {$endif}
               end
               else begin
                 Result := GetLastError;
               end;
             end;
//..
Nun ja, für XE3 läuft es jetzt. Allerdings habe ich keinen Zugang zu XE/XE2. Lauft Dokwiki gibt's die CodePage/MBCS-Felder bei XE noch nicht, aber bei XE2 schon. Wenn also jemand verifizieren könnte, ob das die alte Borland CRTDemo.pas aus dem CRT-Archiv als Konsol-Applikation unter XE / XE2 lauft, wäre ich sehr dankbar. (EXE kann ich ja leider nicht erstellen/anhängen)

Gruß und Dank im Voraus
Gammatester

Codewalker 21. Jan 2013 17:36

AW: Hilfe bei Delphi-CRT-Unit für XE/2
 
Ich habe aus deinem Archiv die rk.exe und die crtdemo getestet. Beide laufen problemlos unter Delphi XE2, sowohl unter 32-Bit als auch unter 64-Bit

gammatester 22. Jan 2013 07:59

AW: Hilfe bei Delphi-CRT-Unit für XE/2
 
Zitat:

Zitat von Codewalker (Beitrag 1200000)
Beide laufen problemlos unter Delphi XE2, sowohl unter 32-Bit als auch unter 64-Bit

Danke für den Test mit dem positiven Ergebnis!:-D

Noch jemand mit XE? Oder ist das inzwischen praktisch verschwunden?

Gruß Gammatester

Klaus01 22. Jan 2013 08:29

AW: Hilfe bei Delphi-CRT-Unit für XE/2
 
Hallo Gammatester,

rk.exe ließ sich mit XE starter ohne Probleme erstellen und konnte auch gestartet werden.

Grüße
Klaus

gammatester 22. Jan 2013 08:42

AW: Hilfe bei Delphi-CRT-Unit für XE/2
 
Zitat:

Zitat von Klaus01 (Beitrag 1200043)
rk.exe ließ sich mit XE starter ohne Probleme erstellen und konnte auch gestartet werden.

Danke. Heißt das, das crtdemo nicht funktioniert oder hast Du es nicht getestet? Da es noch ein altes Original von Borland aus BP7-Zeiten ist, hat es noch die PAS-Extension. Also einfach in crtdemo.dpr umbennen.

Bei der Anpassung hatte ich für XE3 die Erfahrung gemacht, daß die normale Textausgabe mit ASCII-zeichen funktioniert, aber nicht nicht Farben, Fenster, Zeilen einfügen etc. RK testet eigentlich nur die Tastatureingabe, interressanter (und deshalb auch im 1. Beitrag genannt) wäre crtdemo.

Aber immerhin habe ich ja schon die Info, daß die Unit unter XE kompiliert werden kann.

Danke und Gruß
Gammatester

Klaus01 22. Jan 2013 08:43

AW: Hilfe bei Delphi-CRT-Unit für XE/2
 
Zitat:

Zitat von gammatester (Beitrag 1200044)
[... Heißt das, das crtdemo nicht funktioniert oder hast Du es nicht getestet? Da es noch ein altes Original von Borland aus BP7-Zeiten ist, hat es noch die PAS-Extension. Also einfach in crtdemo.dpr umbennen.

Ich hatte es schlichtweg nicht getestet.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz