AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von gammatester · begonnen am 21. Jan 2013 · letzter Beitrag vom 22. Jan 2013
 
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#1

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

  Alt 21. Jan 2013, 12:06
Delphi-Version: XE2
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
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:38 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