upubfun.pas
来自「a voice guide client ,it is the second p」· PAS 代码 · 共 1,965 行 · 第 1/5 页
PAS
1,965 行
begin
p_field_value := PBaseDBFieldValue(_car_info.CarinfoValueList.Items[i]);
if p_field_value^.FieldInfo.FieldName = _field_name then
begin
if p_field_value^.Value <> Null then
Result := p_field_value^.Value;
Break;
end;
end;
end;
class function TCarInfo.GetFieldValueVarByName(_car_info: TCarInfo; _field_name: string): Variant;
var
i: Integer;
p_field_value : PBaseDBFieldValue;
field_index : Integer;
begin
result := Null;
field_index := _car_info.FieldList.IndexOf(_field_name);
if field_index < 0 then
Exit;
p_field_value := PBaseDBFieldValue(_car_info.CarinfoValueList.Items[field_index]);
if p_field_value^.Value <> Null then
Result := p_field_value^.Value;
// for i := 0 to _car_info.CarinfoValueList.Count - 1 do
// begin
// p_field_value := PBaseDBFieldValue(_car_info.CarinfoValueList.Items[i]);
//
// if p_field_value^.FieldInfo.FieldName = _field_name then
// begin
// if p_field_value^.Value <> Null then
// Result := p_field_value^.Value;
// Break;
// end;
// end;
end;
class function TCarInfo.GetFieldValueDateByName(_car_info: TCarInfo;
_field_name: string): TDateTime;
var
i: Integer;
p_field_value : PBaseDBFieldValue;
begin
result := Now;
for i := 0 to _car_info.CarinfoValueList.Count - 1 do
begin
p_field_value := PBaseDBFieldValue(_car_info.CarinfoValueList.Items[i]);
if p_field_value^.FieldInfo.FieldName = _field_name then
begin
if p_field_value^.Value <> Null then
Result := p_field_value^.Value;
Break;
end;
end;
end;
class procedure TCarInfo.SetVarToFieldValue(_car_info: TCarInfo;
_field_name: string; _value: Variant);
var
i: Integer;
p_field_value : PBaseDBFieldValue;
begin
for i := 0 to _car_info.CarinfoValueList.Count - 1 do
begin
p_field_value := PBaseDBFieldValue(_car_info.CarinfoValueList.Items[i]);
if p_field_value^.FieldInfo.FieldName = _field_name then
begin
p_field_value^.Value := _value;
Break;
end;
end;
end;
//procedure TCarInfo.TCarInfo.SetVarToFieldValue(Self, _field_name, _str: string);
//var
// i: Integer;
// p_field_value : PBaseDBFieldValue;
//begin
// for i := 0 to CarinfoValueList.Count - 1 do
// begin
// p_field_value := PBaseDBFieldValue(CarinfoValueList.Items[i]);
//
// if p_field_value^.FieldInfo.FieldName = _field_name then
// begin
// p_field_value^.Value := _str;
// Break;
// end;
// end;
//end;
//
//procedure TCarInfo.TCarInfo.SetVarToFieldValue(Self, _field_name: string; _int: Integer);
//var
// i: Integer;
// p_field_value : PBaseDBFieldValue;
//begin
// for i := 0 to CarinfoValueList.Count - 1 do
// begin
// p_field_value := PBaseDBFieldValue(CarinfoValueList.Items[i]);
//
// if p_field_value^.FieldInfo.FieldName = _field_name then
// begin
// p_field_value^.Value := _int;
// Break;
// end;
// end;
//end;
//
//procedure TCarInfo.SetValueToFieldValue(_field_name: string; _value: Variant);
//var
// i: Integer;
// p_field_value : PBaseDBFieldValue;
//begin
// for i := 0 to CarinfoValueList.Count - 1 do
// begin
// p_field_value := PBaseDBFieldValue(CarinfoValueList.Items[i]);
//
// if p_field_value^.FieldInfo.FieldName = _field_name then
// begin
// p_field_value^.Value := _value;
// Break;
// end;
// end;
//end;
destructor TCarInfo.Destroy;
begin
InitEFenseList;
FreeAndNil(EFenseList);
FreeAndNil(GpsInfo);
FreeAndNil(GpsInfoGenOper);
FreeAndNil(FieldList);
// 清空 并 释放 车辆信息列表
TBaseDBUtility.DisposeList(CarinfoValueList);
FreeAndNil(CarinfoValueList);
//if Assigned(TaskInfo) then FreeAndNil(TaskInfo);
end;
procedure TCarInfo.InitEFenseList;
var
EFense: ^TEfenceItem;
begin
if not Assigned(EFenseList) then EFenseList:= TList.Create;
while EFenseList.Count >0 do begin
EFense:= EFenseList.Items[0];
if Assigned(EFense) then Dispose(EFense);
EFenseList.Delete(0);
end;
end;
procedure TCarInfo.SetGpsInfo(RecvTime, GpsTime: TDateTime; Long,
Lat: Double; Speed, Head: Single; GpsValid: Boolean; GpsState: string);
begin
GpsInfo.RecvTime:= RecvTime;
GpsInfo.GpsTime:= GpsTime;
GpsInfo.Long:= Long;
GpsInfo.Lat:= Lat;
GpsInfo.Speed:= Speed;
GpsInfo.Head:= Head;
GpsInfo.GpsValid:= GpsValid;
GpsInfo.GpsState:= GpsState;
end;
procedure TCarInfo.SetGpsOperate(RecvTime: TDateTime;
OperateId, OperateContent, OperateScribe: String);
begin
GpsInfo.OperateTime:= RecvTime;
GpsInfo.OperateId:= OperateId;
GpsInfo.OperateContent:= OperateContent;
GpsInfo.OperateScribe:= OperateScribe;
end;
//------------------------------------------------------------------------------
// 车辆信息属性值访问方法
//------------------------------------------------------------------------------
{: 取通信号码短ID。
}
function TCarInfo.getVehicleCommIDCardinal: Cardinal;
var
error_string : string;
comm_no_id : Int64;
begin
Result := ERROR_CAR_ID_CARDINAL;
if ExtractCommNOIDFromCarInfo(Self, error_string, comm_no_id, True) then
Result := comm_no_id
else
frmMain.AddDebugInfo(error_string);
end;
{: 取通信号码长ID。
}
function TCarInfo.getVehicleCommIDInt64: Int64;
var
error_string : string;
comm_no_id : Int64;
begin
Result := ERROR_CAR_ID_INT64;
if ExtractCommNOIDFromCarInfo(Self, error_string, comm_no_id, False) then
Result := comm_no_id
else
frmMain.AddDebugInfo(error_string);
end;
{: 取通信号码长字符串。
}
function TCarInfo.getVehicleCommIDStringLong: string;
var
error_string : string;
comm_no_str : string;
begin
if ExtractCommNOStrFromCarInfo(Self, error_string, comm_no_str, False) then
Result := comm_no_str
else
frmMain.AddDebugInfo(error_string);
end;
{: 取通信号码短字符串。
}
function TCarInfo.getVehicleCommIDStringShort: string;
var
error_string : string;
comm_no_str : string;
begin
if ExtractCommNOStrFromCarInfo(Self, error_string, comm_no_str, True) then
Result := comm_no_str
else begin
Result := '';
frmMain.AddDebugInfo(error_string);
end;
end;
{: 取车牌号码。
}
function TCarInfo.getVehicleRegistrationNO: string;
begin
// 是否 使用 新 或 旧 的数据库定义
if IsOldDB then
Result := GetFieldValueStrByName(Self, 'CarCode')
else
Result := GetFieldValueStrByName(Self, 'RegistrationNO');
end;
{: 取车载终端类型。
}
function TCarInfo.getVehicleTerminalType: TTargetType;
var
terminal_type_id: Integer;
begin
// 是否 使用 新 或 旧 的数据库定义
if IsOldDB then
terminal_type_id := GetFieldValueIntByName(Self, 'CarStyle')
else
terminal_type_id := GetFieldValueIntByName(Self, 'TerminalTypeID');
Result := TTargetType(terminal_type_id);
end;
{: 取车载终端类型名称。
}
function TCarInfo.getVehicleTerminalTypeName: string;
var
terminal_type: TTargetType;
begin
terminal_type := VehicleTerminalType;
Result := GetTerminalTypName(Integer(terminal_type));
end;
{: 取车辆类型。
}
function TCarInfo.getVehicleTypeName: string;
begin
// 是否 使用 新 或 旧 的数据库定义
if IsOldDB then
Result := GetFieldValueStrByName(Self, 'CarType')
else
Result := GetFieldValueStrByName(Self, 'VehicleTypeName');
end;
{: 取车辆车主姓名。
}
function TCarInfo.getVehicleOwnerName: string;
begin
// 是否 使用 新 或 旧 的数据库定义
if IsOldDB then
Result := GetFieldValueStrByName(Self, 'CarOwnerName')
else
Result := GetFieldValueStrByName(Self, 'OwnerName');
end;
{: 取车辆分组编号。
}
function TCarInfo.getVehicleGroupID: Integer;
begin
// 是否 使用 新 或 旧 的数据库定义
if IsOldDB then
Result := GetFieldValueIntByName(Self, 'TeamID')
else
Result := GetFieldValueIntByName(Self, 'GroupID');
end;
//------------------------------------------------------------------------------
// 车辆信息字段列表操作
//------------------------------------------------------------------------------
{: 初始化 车辆信息对象 的 信息字段列表。
@param _car_info 车辆信息对象
}
class procedure TCarInfo.InitialCarInfoFieldValueList(_car_info: TCarInfo);
var
i : Integer;
p_field_value : PBaseDBFieldValue;
p_vehicle_info_column : PGPSClientVehicleInfoColumn;
begin
// 释放原有的 车辆信息字段列表
if Assigned(_car_info.CarinfoValueList) then
begin
// 清空 并 释放 车辆信息列表
TBaseDBUtility.DisposeList(_car_info.CarinfoValueList);
FreeAndNil(_car_info.CarinfoValueList);
end;
// 建立车辆信息列表
_car_info.CarinfoValueList := TList.Create;
_car_info.FieldList.Clear;
// 初始化车辆信息列表的信息项目
for i := 0 to GPSClientCarInfoColumnList.Count - 1 do
begin
p_vehicle_info_column := PGPSClientVehicleInfoColumn(GPSClientCarInfoColumnList.Objects[i]);
// 使用 新 或 旧 的数据库定义,跳过未定义的字段
if not _car_info.IsOldDB then
begin
// if p_vehicle_info_column^.FieldNameNew = '' then
// Continue;
end
else begin
// if p_vehicle_info_column^.FieldNameOld = '' then
// Continue;
end;
New(p_field_value);
p_field_value^.Value := Null;
p_field_value^.FieldInfo := p_vehicle_info_column^.FieldInfo;
// 如果是新库 则 更改数据库中的字段名
if not _car_info.IsOldDB then
begin
p_field_value^.FieldInfo^.FieldName := p_vehicle_info_column^.FieldNameNew;
p_field_value^.FieldInfo^.FieldCaption := p_vehicle_info_column^.FieldCaptionNew;
end;
// 加入车辆信息列表
_car_info.CarinfoValueList.Add(p_field_value);
// 更新索引
_car_info.FieldList.AddObject(
p_field_value^.FieldInfo^.FieldName, TObject(Pointer(_car_info.FieldList.Count - 1))
);
end;
end;
//------------------------------------------------------------------------------
// 车辆信息 通信属性 处理
//------------------------------------------------------------------------------
class function TCarInfo.ExtractCommNOIDFromCarInfo(_car_info: TCarInfo;
var _error_str: string; var _comm_no_id: Int64;
_is_short: Boolean): Boolean;
var
car_id : Integer;
car_id_comm : Int64;
car_id_comm_short : Int64;
comm_no_str : string;
comm_no_str_db : string;
begin
// 初始化返回值
Result := False;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?