begin Result := false; SetLength(ProtList, 0); if DiagDLL.GetProtocolCount(protCount) then begin for i := 0 to protCount - 1 do begin getIdRes := DiagDLL.GetProtocolInfo(i, piiId, protId); getNameRes := DiagDLL.GetProtocolInfo(i, piiName, protName); getActiveRes := DiagDLL.GetProtocolInfo(i, piiIsActive, protActive); getDiagDataInstallTypeRes := DiagDLL.GetProtocolInfo(i, piiDiagDataInstallType, protDiagDataInstallType); BaseInfoOk := getIdRes and getNameRes and getActiveRes; if BaseInfoOk then begin SetLength(ProtList, Length(ProtList) + 1); ProtList[high(ProtList)].ProtocolId := StrToU8(protId); ProtList[high(ProtList)].ProtocolName := protName; if getDiagDataInstallTypeRes and (protDiagDataInstallType = cDiagDataInstallTypeTemporary) then begin ProtList[high(ProtList)].DiagDataInstallationType := Ord(dditTemporary); end else begin ProtList[high(ProtList)].DiagDataInstallationType := Ord(dditPermanent); end; Result := True; end; end; end; end;