Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   TConversionFormat in neuen Delphi Versionen (https://www.delphipraxis.net/163433-tconversionformat-neuen-delphi-versionen.html)

Mavarik 28. Sep 2011 19:00

TConversionFormat in neuen Delphi Versionen
 
Hallo Zusammen!

BTW:ICH HASSE DIE NEUE UTF-16 VCL!

Alt:
Delphi-Quellcode:
{$IFNDEF CLR}
  PConversionFormat = ^TConversionFormat;
{$ENDIF}
  TConversionFormat = record
    ConversionClass: TConversionClass;
    Extension: string;
    Next : PConversionFormat;
  end;
Neu:
Delphi-Quellcode:
{$IFNDEF CLR}
  PConversionFormat = ^TConversionFormat;
{$ENDIF}
  TConversionFormat = record
    ConversionClass: TConversionClass;
    Extension: string;
  end;
Und Jetzt? Wie sicht man ohne den Next Pointer den nächsten converter?

Früher ging das so:
Delphi-Quellcode:
procedure TRichEditStrings98.LoadFromFile(const FileName: string);
var
  Ext: string;
  Convert: PConversionFormat;
begin
  Ext := AnsiLowerCaseFileName(ExtractFileExt(Filename));
  System.Delete(Ext, 1, 1);
  Convert := ConversionFormatList;
  while Convert <> nil do
    with Convert^ do
      if Extension <> Ext then Convert := Next
      else Break;
  if Convert = nil then
    Convert := @TextConversionFormat;
  FConverter := Convert^.ConversionClass.Create;
  try
    inherited LoadFromFile(FileName);
  except
    FConverter.Free;
    FConverter := nil;
    raise;
  end;
end;
Mavarik :coder:

PS.: Ich glaub ich deinstalliere XE2 wieder...!

Bernhard Geyer 28. Sep 2011 20:28

AW: TConversionFormat in neuen Delphi Versionen
 
Zitat:

Zitat von Mavarik (Beitrag 1127308)
Hallo Zusammen!

BTW:ICH HASSE DIE NEUE UTF-8 VCL!

Bei Freepascal/Lazarus setzt man auf UTF-8 auf.
Delphi verwendet jetzt sinnvollerweise wie auch Windows/MacOS/.NET/Java UTF-16.

In welcher Unit gibt's denn diese Typdefinition und was soll sie machen? Evtl. gibts ja jetzt ein paar Helperfunktionen/Klassen.

daywalker9 28. Sep 2011 20:52

AW: TConversionFormat in neuen Delphi Versionen
 
Unter XE2 handelt das RichEdit dies selber.

Delphi-Quellcode:
class procedure TCustomRichEdit.RegisterConversionFormat(const AExtension: string;
  AConversionClass: TConversionClass);
begin
  AppendConversionFormat(AExtension, AConversionClass);
end;

procedure TRichEditStrings.LoadFromFile(const FileName: string; Encoding: TEncoding);
var
  I: Integer;
  Ext: string;
  Convert, LConvert: TConversionFormat;
begin
  Ext := WideLowerCase(ExtractFileExt(Filename));
{$IFDEF CLR}
  Borland.Delphi.System.Delete(Ext, 1, 1);
{$ELSE}
  System.Delete(Ext, 1, 1);
{$ENDIF}

  Convert := TextConversionFormat;
  for I := 0 to ConversionFormatList.Count - 1 do
  begin
{$IFDEF CLR}
    LConvert := TConversionFormat(ConversionFormatList[I]);
{$ELSE}
    LConvert := PConversionFormat(ConversionFormatList[I])^;
{$ENDIF}
    if LConvert.Extension = Ext then
    begin
      Convert := LConvert;
      Break;
    end;
  end;

  if FConverter = nil then
    FConverter := Convert.ConversionClass.Create;
  try
    inherited LoadFromFile(FileName, Encoding);
  except
    FConverter.Free;
    FConverter := nil;
    raise;
  end;
  RichEdit.DoSetMaxLength($7FFFFFF0);
end;

Mavarik 29. Sep 2011 06:47

AW: TConversionFormat in neuen Delphi Versionen
 
Zitat:

Zitat von Bernhard Geyer (Beitrag 1127313)
Bei Freepascal/Lazarus setzt man auf UTF-8 auf.
Delphi verwendet jetzt sinnvollerweise wie auch Windows/MacOS/.NET/Java UTF-16.

In welcher Unit gibt's denn diese Typdefinition und was soll sie machen? Evtl. gibts ja jetzt ein paar Helperfunktionen/Klassen.

8/16 egal wie auch immer... 2 Wochen arbeit nur weil einer auf die Idee gekommen ist das ein Char nicht mehr ein char ist... UND ICH BRAUCHE DAS NICHT MAL!

Die Definition unterscheiden sich...

D2007 = ComCtrls
XE2 = vcl.ComCtrls

Einmal mit dem Next Pointer einmal ohne...

Mavarik


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:52 Uhr.

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