这种(Delphi)代码中涉及数组函数的对象能否更简洁?

问题描述 投票:0回答:0

关于Delphi中的这个功能。

function TAudioFileMetadata.LoadTags(const Filename: String; var LastError: Integer; var DetectedFormat: TAudioFormat): Boolean;
type
    TLoadFromFunction = function (const Filename: String; var LastError: Integer): Boolean of object;

    TLoadFrom = record
        Format: TAudioFormat;
        Process: TLoadFromFunction;
    end;

var
    i: Byte;
    LoadOrder: array [1..6] of TLoadFrom;

begin
    DetectedFormat := afUnknown;

    LoadOrder[1].Format := afMp3;
    LoadOrder[1].Process := LoadFromMp3;

    //...

    LoadOrder[6].Format := afApe;
    LoadOrder[6].Process := LoadFromApe;

    for i := Low(LoadOrder) to High(LoadOrder) do
    begin
        Result := LoadOrder[i].Process(Filename, LastError);
        if Result then
        begin
            DetectedFormat := LoadOrder[i].Format;
            break;
        end;
    end;
end;

如何提高我的执行力?我是否可以创建和填写 LoadOrder 数组的一次拍摄(或至少不是每个数组2行)。TLoadFrom). 是否可以 const 数组会是可能的(我不认为)?

arrays pointers delphi
© www.soinside.com 2019 - 2024. All rights reserved.