📄 adxlbmdm.pas
字号:
begin
Result := ecFileNotFound;
if FileExists(ModemCapIndex) then begin
List := nil;
try
Result := ecInvalidFile;
List := TStringList.Create;
List.LoadFromFile(ModemCapIndex);
{ find the modem }
I := 0;
Found := False;
while not Found do begin
S := 'ModemName = "' + ModemRecord.ModemName + '" Manufacturer = "' +
ModemRecord.Manufacturer + '" Model = "' + ModemRecord.Model;
Found := Pos(S, List[I]) > 0;
if not Found then begin
inc(I);
if I >= List.Count then begin
Result := ecModemNotFound;
Exit;
end;
end;
end;
{ found the modem, delete it }
List.Delete(I);
{ find the last modem record }
I := pred(List.Count);
while (Pos('<ModemRecord ModemName = "', List[I]) = 0) and (I > 0) do begin
List.Delete(I);
dec(I);
end;
FixupModemcap(List);
List.SaveToFile(ModemCapIndex);
Result := ecOK;
finally
List.Free;
end;
end;
end;
destructor TApdModemCapDetail.Destroy;
begin
if Assigned(DetailStream) then
DetailStream.Free;
inherited;
end;
function TApdModemCapDetail.ExportDetailXML(Modem: TLmModem): Integer;
var
I : Integer;
begin
try
WriteLine(' <Modem');
WriteLine(' FriendlyName = "' + XMLize(Modem.FriendlyName) + '"');
WriteLine(' Manufacturer = "' + XMLize(Modem.Manufacturer) + '"');
WriteLine(' Model = "' + XMLize(Modem.Model) + '"');
WriteLine(' Reset = "' + XMLize(Modem.Reset) + '"');
WriteLine(' ForwardDelay = "' + XMLizeInt(Modem.ForwardDelay) + '"');
WriteLine(' VariableTerminator = "' + XMLize(Modem.VariableTerminator) + '"');
WriteLine(' CallSetupFailTimeout = "' + XMLizeInt(Modem.CallSetupFailTimeout) + '"');
WriteLine(' InactivityTimeout = "' + XMLizeInt(Modem.InactivityTimeout) + '"');
WriteLine(' SupportsWaitForBongTone = "' + XMLizeBool(Modem.SupportsWaitForBongTone) + '"');
WriteLine(' SupportsWaitForQuiet = "' + XMLizeBool(Modem.SupportsWaitForQuiet) + '"');
WriteLine(' SupportsWaitForDialTone = "' + XMLizeBool(Modem.SupportsWaitForDialTone) + '"');
WriteLine(' SupportsSpeakerVolumeLow = "' + XMLizeBool(Modem.SupportsSpeakerVolumeLow) + '"');
WriteLine(' SupportsSpeakerVolumeMed = "' + XMLizeBool(Modem.SupportsSpeakerVolumeMed) + '"');
WriteLine(' SupportsSpeakerVolumeHigh = "' + XMLizeBool(Modem.SupportsSpeakerVolumeHigh) + '"');
WriteLine(' SupportsSpeakerModeOff = "' + XMLizeBool(Modem.SupportsSpeakerModeOff) + '"');
WriteLine(' SupportsSpeakerModeDial = "' + XMLizeBool(Modem.SupportsSpeakerModeDial) + '"');
WriteLine(' SupportsSpeakerModeOn = "' + XMLizeBool(Modem.SupportsSpeakerModeOn) + '"');
WriteLine(' SupportsSpeakerModeSetup = "' + XMLizeBool(Modem.SupportsSpeakerModeSetup) + '"');
WriteLine(' SupportsSetDataCompressionNegot = "' + XMLizeBool(Modem.SupportsSetDataCompressionNegot) + '"');
WriteLine(' SupportsSetErrorControlProtNegot = "' + XMLizeBool(Modem.SupportsSetErrorControlProtNegot) + '"');
WriteLine(' SupportsSetForcedErrorControl = "' + XMLizeBool(Modem.SupportsSetForcedErrorControl) + '"');
WriteLine(' SupportsSetCellular = "' + XMLizeBool(Modem.SupportsSetCellular) + '"');
WriteLine(' SupportsSetHardwareFlowControl = "' + XMLizeBool(Modem.SupportsSetHardwareFlowControl) + '"');
WriteLine(' SupportsSetSoftwareFlowControl = "' + XMLizeBool(Modem.SupportsSetSoftwareFlowControl) + '"');
WriteLine(' SupportsCCITTBellToggle = "' + XMLizeBool(Modem.SupportsCCITTBellToggle) + '"');
WriteLine(' SupportsSetSpeedNegotiation = "' + XMLizeBool(Modem.SupportsSetSpeedNegotiation) + '"');
WriteLine(' SupportsSetTonePulse = "' + XMLizeBool(Modem.SupportsSetTonePulse) + '"');
WriteLine(' SupportsBlindDial = "' + XMLizeBool(Modem.SupportsBlindDial) + '"');
WriteLine(' SupportsSetV21V23 = "' + XMLizeBool(Modem.SupportsSetV21V23) + '"');
WriteLine(' SupportsModemDiagnostics = "' + XMLizeBool(Modem.SupportsModemDiagnostics) + '"');
WriteLine(' MaxDTERate = "' + XMLizeInt(Modem.MaxDTERate) + '"');
WriteLine(' MaxDCERate = "' + XMLizeInt(Modem.MaxDCERate) + '"');
WriteLine(' PowerDelay = "' + XMLizeInt(Modem.PowerDelay) + '"');
WriteLine(' ConfigDelay = "' + XMLizeInt(Modem.ConfigDelay) + '">');
{ responses }
with Modem.Responses do begin
WriteLine(' <Responses>');
for I := 0 to pred(OK.Count) do
WriteXMLStr(' <OKResponses>', PLmResponseData(OK[I]).Response);
for I := 0 to pred(NegotiationProgress.Count) do
WriteXMLStr(' <NegotiationProgressResponses>', PLmResponseData(NegotiationProgress[I]).Response);
for I := 0 to pred(Connect.Count) do
WriteXMLStr(' <ConnectResponses>', PLmResponseData(Connect[I]).Response);
for I := 0 to pred(Error.Count) do
WriteXMLStr(' <ErrorResponses>', PLmResponseData(Error[I]).Response);
for I := 0 to pred(NoCarrier.Count) do
WriteXMLStr(' <NoCarrierResponses>', PLmResponseData(NoCarrier[I]).Response);
for I := 0 to pred(NoDialtone.Count) do
WriteXMLStr(' <NoDialToneResponses>', PLmResponseData(NoDialTone[I]).Response);
for I := 0 to pred(Busy.Count) do
WriteXMLStr(' <BusyResponses>', PLmResponseData(Busy[I]).Response);
for I := 0 to pred(NoAnswer.Count) do
WriteXMLStr(' <NoAnswerResponses>', PLmResponseData(NoAnswer[I]).Response);
for I := 0 to pred(Ring.Count) do
WriteXMLStr(' <RingResponses>', PLmResponseData(Ring[I]).Response);
for I := 0 to pred(VoiceView1.Count) do
WriteXMLStr(' <VoiceView1Responses>', PLmResponseData(VoiceView1[I]).Response);
for I := 0 to pred(VoiceView2.Count) do
WriteXMLStr(' <VoiceView2Responses>', PLmResponseData(VoiceView2[I]).Response);
for I := 0 to pred(VoiceView3.Count) do
WriteXMLStr(' <VoiceView3Responses>', PLmResponseData(VoiceView3[I]).Response);
for I := 0 to pred(VoiceView4.Count) do
WriteXMLStr(' <VoiceView4Responses>', PLmResponseData(VoiceView4[I]).Response);
for I := 0 to pred(VoiceView5.Count) do
WriteXMLStr(' <VoiceView5Responses>', PLmResponseData(VoiceView5[I]).Response);
for I := 0 to pred(VoiceView6.Count) do
WriteXMLStr(' <VoiceView6Responses>', PLmResponseData(VoiceView6[I]).Response);
for I := 0 to pred(VoiceView7.Count) do
WriteXMLStr(' <VoiceView7Responses>', PLmResponseData(VoiceView7[I]).Response);
for I := 0 to pred(VoiceView8.Count) do
WriteXMLStr(' <VoiceView8Responses>', PLmResponseData(VoiceView8[I]).Response);
for I := 0 to pred(RingDuration.Count) do
WriteXMLStr(' <RingDurationResponses>', PLmResponseData(RingDuration[I]).Response);
for I := 0 to pred(RingBreak.Count) do
WriteXMLStr(' <RingBreakResponses>', PLmResponseData(RingBreak[I]).Response);
for I := 0 to pred(Date.Count) do
WriteXMLStr(' <DateResponses>', PLmResponseData(Date[I]).Response);
for I := 0 to pred(Time.Count) do
WriteXMLStr(' <TimeResponses>', PLmResponseData(Time[I]).Response);
for I := 0 to pred(Number.Count) do
WriteXMLStr(' <NumberResponses>', PLmResponseData(Number[I]).Response);
for I := 0 to pred(Name.Count) do
WriteXMLStr(' <NameResponses>', PLmResponseData(Name[I]).Response);
for I := 0 to pred(Msg.Count) do
WriteXMLStr(' <MsgResponses>', PLmResponseData(Msg[I]).Response);
for I := 0 to pred(SingleRing.Count) do
WriteXMLStr(' <SingleRingResponses>', PLmResponseData(SingleRing[I]).Response);
for I := 0 to pred(DoubleRing.Count) do
WriteXMLStr(' <DoubleRingResponses>', PLmResponseData(DoubleRing[I]).Response);
for I := 0 to pred(TripleRing.Count) do
WriteXMLStr(' <TripleRingResponses>', PLmResponseData(TripleRing[I]).Response);
for I := 0 to pred(Voice.Count) do
WriteXMLStr(' <VoiceResponses>', PLmResponseData(Voice[I]).Response);
for I := 0 to pred(Fax.Count) do
WriteXMLStr(' <FaxResponses>', PLmResponseData(Fax[I]).Response);
for I := 0 to pred(Data.Count) do
WriteXMLStr(' <DataResponses>', PLmResponseData(Data[I]).Response);
for I := 0 to pred(Other.Count) do
WriteXMLStr(' <OtherResponses>', PLmResponseData(Other[I]).Response);
WriteLine(' </Responses>');
end;
for I := 0 to pred(Modem.Answer.Count) do
WriteLine(' <Answer Sequence = "' + XMLizeInt(PLmModemCommand(Modem.Answer[I]).Sequence) +
'">' + XMLize(PLmModemCommand(Modem.Answer[I]).Command) + '</Answer>');
{ fax stuff }
with Modem.FaxDetails do begin
WriteLine(' <FaxDetails');
WriteLine(' ExitCommand = "' + XMLize(ExitCommand) + '"');
WriteLine(' PreAnswerCommand = "' + XMLize(PreAnswerCommand) + '"');
WriteLine(' PreDialCommand = "' + XMLize(PreDialCommand) + '"');
WriteLine(' ResetCommand = "' + XMLize(ResetCommand) + '"');
WriteLine(' SetupCommand = "' + XMLize(SetupCommand) + '"');
WriteLine(' EnableV17Recv = "' + XMLize(EnableV17Recv) + '"');
WriteLine(' EnableV17Send = "' + XMLize(EnableV17Send) + '"');
WriteLine(' FixModemClass = "' + XMLize(FixModemClass) + '"');
WriteLine(' FixSerialSpeed = "' + XMLize(FixSerialSpeed) + '"');
WriteLine(' HighestSendSpeed = "' + XMLize(HighestSendSpeed) + '"');
WriteLine(' LowestSendSpeed = "' + XMLize(LowestSendSpeed) + '"');
WriteLine(' HardwareFlowControl = "' + XMLize(HardwareFlowControl) + '"');
WriteLine(' SerialSpeedInit = "' + XMLize(SerialSpeedInit) + '"');
WriteLine(' Cl1FCS = "' + XMLize(Cl1FCS) + '"');
WriteLine(' Cl2DC2 = "' + XMLize(Cl2DC2) + '"');
WriteLine(' Cl2lsEx = "' + XMLize(Cl2lsEx) + '"');
WriteLine(' Cl2RecvBOR = "' + XMLize(Cl2RecvBOR) + '"');
WriteLine(' Cl2SendBOR = "' + XMLize(Cl2SendBOR) + '"');
WriteLine(' Cl2SkipCtrlQ = "' + XMLize(Cl2SkipCtrlQ) + '"');
WriteLine(' Cl2SWBOR = "' + XMLize(Cl2SWBOR) + '"');
WriteLine(' Class2FlowOff = "' + XMLize(Class2FlowOff) + '"');
WriteLine(' Class2FlowHW = "' + XMLize(Class2FlowHW) + '"');
WriteLine(' Class2FlowSW = "' + XMLize(Class2FlowSW) + '"');
WriteLine('>');
with FaxClass1 do begin
WriteLine(' <Class1>');
WriteLine(' ModemResponseFaxDetect = "' + XMLize(ModemResponseFaxDetect) + '"');
WriteLine(' ModemResponseDataDetect = "' + XMLize(ModemResponseDataDetect) + '"');
WriteLine(' SerialSpeedFaxDetect = "' + XMLize(SerialSpeedFaxDetect) + '"');
WriteLine(' SerialSpeedDataDetect = "' + XMLize(SerialSpeedDataDetect) + '"');
WriteLine(' HostCommandFaxDetect = "' + XMLize(HostCommandFaxDetect) + '"');
WriteLine(' HostCommandDataDetect = "' + XMLize(HostCommandDataDetect) + '"');
WriteLine(' ModemResponseFaxConnect = "' + XMLize(ModemResponseFaxConnect) + '"');
WriteLine(' ModemResponseDataConnect = "' + XMLize(ModemResponseDataConnect) + '"');
for I := 0 to pred(AnswerCommand.Count) do
WriteLine(' <AnswerCommand Sequence = "' + XMLizeInt(PLmModemCommand(AnswerCommand[I]).Sequence) +
'">' + XMLize(PLmModemCommand(AnswerCommand[I]).Command) + '</AnswerCommand>');
WriteLine(' </Class1>');
end;
with FaxClass2 do begin
WriteLine(' <Class2>');
WriteLine(' ModemResponseFaxDetect = "' + XMLize(ModemResponseFaxDetect) + '"');
WriteLine(' ModemResponseDataDetect = "' + XMLize(ModemResponseDataDetect) + '"');
WriteLine(' SerialSpeedFaxDetect = "' + XMLize(SerialSpeedFaxDetect) + '"');
WriteLine(' SerialSpeedDataDetect = "' + XMLize(SerialSpeedDataDetect) + '"');
WriteLine(' HostCommandFaxDetect = "' + XMLize(HostCommandFaxDetect) + '"');
WriteLine(' HostCommandDataDetect = "' + XMLize(HostCommandDataDetect) + '"');
WriteLine(' ModemResponseFaxConnect = "' + XMLize(ModemResponseFaxConnect) + '"');
WriteLine(' ModemResponseDataConnect = "' + XMLize(ModemResponseDataConnect) + '"');
for I := 0 to pred(AnswerCommand.Count) do
WriteLine(' <AnswerCommand Sequence = "' + XMLizeInt(PLmModemCommand(AnswerCommand[I]).Sequence) +
'">' + XMLize(PLmModemCommand(AnswerCommand[I]).Command) + '</AnswerCommand>');
WriteLine(' </Class2>');
end;
with FaxClass2_0 do begin
WriteLine(' <Class2_0>');
WriteLine(' ModemResponseFaxDetect = "' + XMLize(ModemResponseFaxDetect) + '"');
WriteLine(' ModemResponseDataDetect = "' + XMLize(ModemResponseDataDetect) + '"');
WriteLine(' SerialSpeedFaxDetect = "' + XMLize(SerialSpeedFaxDetect) + '"');
WriteLine(' SerialSpeedDataDetect = "' + XMLize(SerialSpeedDataDetect) + '"');
WriteLine(' HostCommandFaxDetect = "' + XMLize(HostCommandFaxDetect) + '"');
WriteLine(' HostCommandDataDetect = "' + XMLize(HostCommandDataDetect) + '"');
WriteLine(' ModemResponseFaxConnect = "' + XMLize(ModemResponseFaxConnect) + '"');
WriteLine(' ModemResponseDataConnect = "' + XMLize(ModemResponseDataConnect) + '"');
for I := 0 to pred(AnswerCommand.Count) do
WriteLine(' <AnswerCommand Sequence = "' + XMLizeInt(PLmModemCommand(AnswerCommand[I]).Sequence) +
'">' + XMLize(PLmModemCommand(AnswerCommand[I]).Command) + '</AnswerCommand>');
WriteLine(' </Class2_0>');
end;
WriteLine(' </FaxDetails>');
end;
with Modem.Voice do begin
WriteLine(' <Voice');
WriteLine(' VoiceProfile = "' + XMLize(VoiceProfile) + '"');
WriteLine(' HandsetCloseDelay = "' + XMLizeInt(HandsetCloseDelay) + '"');
WriteLine(' SpeakerPhoneSpecs = "' + XMLize(SpeakerPhoneSpecs) + '"');
WriteLine(' AbortPlay = "' + XMLize(AbortPlay) + '"');
WriteLine(' CallerIDOutSide = "' + XMLize(CallerIDOutSide) + '"');
WriteLine(' CallerIDPrivate = "' + XMLize(CallerIDPrivate) + '"');
WriteLine(' TerminatePlay = "' + XMLize(TerminatePlay) + '"');
WriteLine(' TerminateRecord = "' + XMLize(TerminateRecord) + '"');
WriteLine(' VoiceManufacturerID = "' + XMLize(VoiceManufacturerID) + '"');
WriteLine(' VoiceProductIDWaveIn = "' + XMLize(VoiceProductIDWaveIn) + '"');
WriteLine(' VoiceProductIDWaveOut = "' + XMLize(VoiceProductIDWaveOut) + '"');
WriteLine(' VoiceSwitchFeatures = "' + XMLize(VoiceSwitchFeatures) + '"');
WriteLine(' VoiceBaudRate = "' + XMLizeInt(VoiceBaudRate) + '"');
WriteLine(' VoiceMixerMid = "' + XMLize(VoiceMixerMid) + '"');
WriteLine(' VoiceMixerPid = "' + XMLize(VoiceMixerPid) + '"');
WriteLine(' VoiceMixerLineID = "' + XMLize(VoiceMixerLineID) + '"');
WriteLine('>');
for I := 0 to pred(CloseHandset.Count) do
WriteLine(' <CloseHandset Sequence = "' + XMLizeInt(PLmModemCommand(CloseHandset[I]).Sequence) +
'">' + XMLize(PLmModemCommand(CloseHandset[I]).Command) + '</CloseHandset>');
for I := 0 to pred(EnableCallerID.Count) do
WriteLine(' <EnableCallerID Sequence = "' + XMLizeInt(PLmModemCommand(EnableCallerID[I]).Sequence) +
'">' + XMLize(PLmModemCommand(EnableCallerID[I]).Command) + '</EnableCallerID>');
for I := 0 to pred(EnableDistinctiveRing.Count) do
WriteLine(' <EnableDistinctiveRing Sequence = "' + XMLizeInt(PLmModemCommand(EnableDistinctiveRing[I]).Sequence) +
'">' + XMLize(PLmModemCommand(EnableDistinctiveRing[I]).Command) + '</EnableDistinctiveRing>');
for I := 0 to pred(GenerateDigit.Count) do
WriteLine(' <GenerateDigit Sequence = "' + XMLizeInt(PLmModemCommand(GenerateDigit[I]).Sequence) +
'">' + XMLize(PLmModemCommand(GenerateDigit[I]).Command) + '</GenerateDigit>');
for I := 0 to pred(HandsetPlayFormat.Count) do
WriteLine(' <HandsetPlayFormat Sequence = "' + XMLizeInt(PLmModemCommand(HandsetPlayFormat[I]).Sequence) +
'">' + XMLize(PLmModemCommand(HandsetPlayFormat[I]).Command) + '</HandsetPlayFormat>');
for I := 0 to pred(HandsetRecordFormat.Count) do
WriteLine(' <HandsetRecordFormat Sequence = "' + XMLizeInt(PLmModemCommand(HandsetRecordFormat[I]).Sequence) +
'">' + XMLize(PLmModemCommand(HandsetRecordFormat[I]).Command) + '</HandsetRecordFormat>');
for I := 0 to pred(LineSetPlayFormat.Count) do
WriteLine(' <LineSetPlayFormat Sequence = "' + XMLizeInt(PLmModemCommand(LineSetPlayFormat[I]).Sequence) +
'">' + XMLize(PLmModemCommand(LineSetPlayFormat[I]).Command) + '</LineSetPlayFormat>');
for I := 0 to pred(LineSetRecordFormat.Count) do
WriteLine(' <LineSetRecordFormat Sequence = "' + XMLizeInt(PLmModemCommand(LineSetRecordFormat[I]).Sequence) +
'">' + XMLize(PLmModemCommand(LineSetRecordFormat[I]).Command) + '</LineSetRecordFormat>');
for I := 0 to pred(OpenHandset.Count) do
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -