![]() |
TConversionFormat in neuen Delphi Versionen
Hallo Zusammen!
BTW:ICH HASSE DIE NEUE UTF-16 VCL! Alt:
Delphi-Quellcode:
Neu:
{$IFNDEF CLR}
PConversionFormat = ^TConversionFormat; {$ENDIF} TConversionFormat = record ConversionClass: TConversionClass; Extension: string; Next : PConversionFormat; end;
Delphi-Quellcode:
Und Jetzt? Wie sicht man ohne den Next Pointer den nächsten converter?
{$IFNDEF CLR}
PConversionFormat = ^TConversionFormat; {$ENDIF} TConversionFormat = record ConversionClass: TConversionClass; Extension: string; end; Früher ging das so:
Delphi-Quellcode:
Mavarik :coder:
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; PS.: Ich glaub ich deinstalliere XE2 wieder...! |
AW: TConversionFormat in neuen Delphi Versionen
Zitat:
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. |
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; |
AW: TConversionFormat in neuen Delphi Versionen
Zitat:
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