program DfcImgz; {$APPTYPE CONSOLE} uses ControlsAtomFix, DefineTypes, GraphicEx, FileToImage, Windows, ActiveX, Classes, DfcImgs, Graphics, IniFiles, JPEG, msxml, SysUtils; var nI, nX1Len, nVideoWidth, nVideoHeight : Integer; gWriteYBRColor : Integer; gPSInStr, gPPInStr : string; gTargetDcmFile, gSourceExamFile, gSourceExamType : string; gDeleteESFOnPE : Boolean; //gSourceStoreFiles : TStrings; gDcmFileInfo : TDcmFileInfo; gDebugOutput, gDebugConvert : Boolean; function InitP1XMLStr:string; var sDate, sTime, aAccNo: string; function GetPSex:string; begin if Odd(Random(2)) then Result := 'M' else Result := 'F'; end; begin Randomize; sDate := GetRndDateStr(5); sTime := GetRndTimeStr; aAccNo := GetRndStr(8); Result := ''; Result := Result + ''; Result := Result + ''; //Result := Result + ''; Result := Result + ''; Result := Result + ''; Result := Result + ''; Result := Result + ''; Result := Result + ''; Result := Result + ''; Result := Result + ''; end; function InitXMLP1Info(aXMLData: string):Boolean; var //tFile: TextFile; //sXML : string; node : IXMLDOMElement; vXMLHelper : IXMLDOMDocument; begin Result := False; nX1Len := Length(aXMLData); WriteLogText(44, 'I', 'InitXMLP1Info ' + IntToStr(nX1Len) + ' bytes'); try { sXML := ''; AssignFile(tFile, 'C:\Users\User\Desktop\ImgList.xml'); Reset(tFile); while not Eof(tFile) do begin Readln(tFile, sTmp); sXML := sXML + sTmp; end; CloseFile(tFile); //Showmessage(sXML); //} if Length(aXMLData) < 1 then aXMLData := InitP1XMLStr; if gDebugOutput then WriteLogText(44, 'D', aXMLData); vXMLHelper := CoDOMDocument.Create; if vXMLHelper.loadXML(aXMLData) then begin node := IXMLDOMElement(vXMLHelper.selectSingleNode('/XML/ODSP/EXEPIN')); if node <> nil then begin if node.attributes.getNamedItem('DICOMType') <> nil then gDcmFileInfo.DICOMType := StrToIntDef(node.attributes.getNamedItem('DICOMType').Text, 0); if node.attributes.getNamedItem('DebugConvert') <> nil then begin if node.attributes.getNamedItem('DebugConvert').Text = '1' then gDebugConvert := True; end; end; node := IXMLDOMElement(vXMLHelper.selectSingleNode('/XML/ODSP/EXEPIN/Patient')); if node <> nil then begin if node.attributes.getNamedItem('PatientID') <> nil then gDcmFileInfo.PatientID := Trim(node.attributes.getNamedItem('PatientID').Text); if node.attributes.getNamedItem('PatientIssuerID') <> nil then gDcmFileInfo.PatientIssuerID := Trim(node.attributes.getNamedItem('PatientIssuerID').Text); if node.attributes.getNamedItem('PatientName') <> nil then gDcmFileInfo.PatientName := Trim(node.attributes.getNamedItem('PatientName').Text); if node.attributes.getNamedItem('PatientDOB') <> nil then gDcmFileInfo.PatientDOB := Trim(node.attributes.getNamedItem('PatientDOB').Text); if node.attributes.getNamedItem('PatientSex') <> nil then gDcmFileInfo.PatientSex := Trim(node.attributes.getNamedItem('PatientSex').Text); end; node := IXMLDOMElement(vXMLHelper.selectSingleNode('/XML/ODSP/EXEPIN/Study')); if node <> nil then begin if node.attributes.getNamedItem('AccessionNumber') <> nil then gDcmFileInfo.AccessionNumber := Trim(node.attributes.getNamedItem('AccessionNumber').Text); if node.attributes.getNamedItem('StudyInstanceUID') <> nil then gDcmFileInfo.StudyInstanceUID := Trim(node.attributes.getNamedItem('StudyInstanceUID').Text); if node.attributes.getNamedItem('StudyID') <> nil then gDcmFileInfo.StudyID := Trim(node.attributes.getNamedItem('StudyID').Text); if node.attributes.getNamedItem('StudyDate') <> nil then gDcmFileInfo.StudyDate := Trim(node.attributes.getNamedItem('StudyDate').Text); if node.attributes.getNamedItem('StudyTime') <> nil then gDcmFileInfo.StudyTime := Trim(node.attributes.getNamedItem('StudyTime').Text); if node.attributes.getNamedItem('StudyDescription') <> nil then gDcmFileInfo.StudyDescription := Trim(node.attributes.getNamedItem('StudyDescription').Text); if node.attributes.getNamedItem('ReferringPhysicianName') <> nil then gDcmFileInfo.ReferringPhysicianName := Trim(node.attributes.getNamedItem('ReferringPhysicianName').Text); end; node := IXMLDOMElement(vXMLHelper.selectSingleNode('/XML/ODSP/EXEPIN/Series')); if node <> nil then begin if node.attributes.getNamedItem('SeriesInstanceUID') <> nil then gDcmFileInfo.SeriesInstanceUID := Trim(node.attributes.getNamedItem('SeriesInstanceUID').Text); if node.attributes.getNamedItem('Modality') <> nil then gDcmFileInfo.Modality := Trim(node.attributes.getNamedItem('Modality').Text); if node.attributes.getNamedItem('SeriesNumber') <> nil then gDcmFileInfo.SeriesNumber := Trim(node.attributes.getNamedItem('SeriesNumber').Text); if node.attributes.getNamedItem('SeriesDate') <> nil then gDcmFileInfo.SeriesDate := Trim(node.attributes.getNamedItem('SeriesDate').Text); if node.attributes.getNamedItem('SeriesTime') <> nil then gDcmFileInfo.SeriesTime := Trim(node.attributes.getNamedItem('SeriesTime').Text); if node.attributes.getNamedItem('SeriesDescription') <> nil then gDcmFileInfo.SeriesDescription := Trim(node.attributes.getNamedItem('SeriesDescription').Text); if node.attributes.getNamedItem('InstitutionName') <> nil then gDcmFileInfo.InstitutionName := Trim(node.attributes.getNamedItem('InstitutionName').Text); if node.attributes.getNamedItem('Manufacturer') <> nil then gDcmFileInfo.Manufacturer := Trim(node.attributes.getNamedItem('Manufacturer').Text); if node.attributes.getNamedItem('ModelName') <> nil then gDcmFileInfo.ModelName := Trim(node.attributes.getNamedItem('ModelName').Text); if node.attributes.getNamedItem('SoftwareVersions') <> nil then gDcmFileInfo.SoftwareVersions := Trim(node.attributes.getNamedItem('SoftwareVersions').Text); if node.attributes.getNamedItem('CreatorVersionUID') <> nil then gDcmFileInfo.CreatorVersionUID := Trim(node.attributes.getNamedItem('CreatorVersionUID').Text); end; node := IXMLDOMElement(vXMLHelper.selectSingleNode('/XML/ODSP/EXEPIN/Image')); if node <> nil then begin if node.attributes.getNamedItem('SOPInstanceUID') <> nil then gDcmFileInfo.SOPInstanceUID := Trim(node.attributes.getNamedItem('SOPInstanceUID').Text); if node.attributes.getNamedItem('ImageDate') <> nil then gDcmFileInfo.ImageDate := Trim(node.attributes.getNamedItem('ImageDate').Text); if node.attributes.getNamedItem('ImageTime') <> nil then gDcmFileInfo.ImageTime := Trim(node.attributes.getNamedItem('ImageTime').Text); if node.attributes.getNamedItem('ImageType') <> nil then gDcmFileInfo.ImageType := Trim(node.attributes.getNamedItem('ImageType').Text); if node.attributes.getNamedItem('InstanceNumber') <> nil then gDcmFileInfo.ImageNumber := StrToIntDef(node.attributes.getNamedItem('InstanceNumber').Text, 1); if node.attributes.getNamedItem('Laterality') <> nil then gDcmFileInfo.Laterality := Trim(node.attributes.getNamedItem('Laterality').Text); if node.attributes.getNamedItem('ImageLaterality') <> nil then gDcmFileInfo.ImageLaterality := Trim(node.attributes.getNamedItem('ImageLaterality').Text); if node.attributes.getNamedItem('PdfDocTitle') <> nil then gDcmFileInfo.PdfDocTitle := Trim(node.attributes.getNamedItem('PdfDocTitle').Text); if node.attributes.getNamedItem('BurnedInAnnotation') <> nil then gDcmFileInfo.BurnedInAnnotation := Trim(node.attributes.getNamedItem('BurnedInAnnotation').Text); end; if Trim(gDcmFileInfo.ImageDate) = '' then gDcmFileInfo.ImageDate := gDcmFileInfo.SeriesDate; if Trim(gDcmFileInfo.ImageTime) = '' then gDcmFileInfo.ImageTime := gDcmFileInfo.SeriesTime; Result := True; WriteLogText(44, 'I', 'InitXMLP1Info done'); end else begin WriteLogText(0, 'E', 'Load P1 XML string Failed'); end; except on e:exception do begin WriteLogText(0, 'W', 'Load P1 XML string with error : ' + e.Message); end; end; end; function InitXMLP2Info(aXMLData: string):Boolean; var sTmp, sTaskIDStr : string; node : IXMLDOMElement; vXMLHelper : IXMLDOMDocument; begin Result := False; WriteLogText(44, 'I', 'InitXMLP2Info ' + IntToStr(Length(aXMLData)) + ' bytes'); try if Length(aXMLData) < 1 then Exit; if gDebugOutput then WriteLogText(44, 'D', aXMLData); vXMLHelper := CoDOMDocument.Create; if vXMLHelper.loadXML(aXMLData) then begin sTaskIDStr := '43210'; // node := IXMLDOMElement(vXMLHelper.selectSingleNode('/XML/ODSP/EXESIN')); sTmp := Trim(node.attributes.getNamedItem('Type').Text); if sTmp = '0' then begin //自本地图像文件转换文件 if node.attributes.getNamedItem('OutputFile') <> nil then gTargetDcmFile := Trim(node.attributes.getNamedItem('OutputFile').Text); if node.attributes.getNamedItem('TaskID') <> nil then sTaskIDStr := Trim(node.attributes.getNamedItem('TaskID').Text); if Pos('0' + IntToStr(nX1Len), sTaskIDStr) > 1 then begin if node.attributes.getNamedItem('ESFileName') <> nil then gSourceExamFile := Trim(node.attributes.getNamedItem('ESFileName').Text); if node.attributes.getNamedItem('ESFileType') <> nil then gSourceExamType := Trim(node.attributes.getNamedItem('ESFileType').Text); gTaskInitP1 := False; gTaskInitP2 := True; end else begin if node.attributes.getNamedItem('ESFileName') <> nil then gSourceExamFile := Trim(node.attributes.getNamedItem('ESFileName').Text); if node.attributes.getNamedItem('ESFileType') <> nil then gSourceExamType := Trim(node.attributes.getNamedItem('ESFileType').Text); end; if node.attributes.getNamedItem('DeleteESFile') <> nil then begin sTmp := UpperCase(Trim(node.attributes.getNamedItem('DeleteESFile').Text)); if (sTmp='1') or (sTmp='ON') or (sTmp='TRUE') or (sTmp='YES') then gDeleteESFOnPE := True; end; end else if sTmp = '1' then begin //自数据库获取转换信息(已禁用) end; Result := True; WriteLogText(44, 'I', 'InitXMLP2Info done'); end else begin WriteLogText(0, 'E', 'Load P2 XML string Failed'); end; except on e:exception do begin WriteLogText(0, 'W', 'Load P2 XML string with error : ' + e.Message); end; end; end; function ProcessImgDSP:Boolean; var iW, iH : Integer; bImgLoadOK : Boolean; bmpA : TBitmap; jpgA : TJPEGImage; msJPG : TMemoryStream; sDebugInfo, sFileExt : string; begin Result := False; WriteLogText(44, 'I', 'Start ProcessImgDSP'); bImgLoadOK := False; msJPG := TMemoryStream.Create; jpgA := TJPEGImage.Create; WriteLogText(44, 'I', 'ESFileName = [' + gSourceExamFile + ']'); if Length(gSourceExamFile) > 0 then begin if FileExists(gSourceExamFile) then begin try gDcmFileInfo.SourceDataAddress := 0; gDcmFileInfo.SourceDataType := StrToIntDef(gSourceExamType, 0); gDcmFileInfo.SourceDataSize := GetSizeFromFile(gSourceExamFile); WriteLogText(44, 'I', 'Loading image from ESFile(' + gSourceExamFile + '), file size : ' + IntToStr(gDcmFileInfo.SourceDataSize) + ' bytes'); sFileExt := UpperCase(ExtractFileExt(ExtractFileName(gSourceExamFile))); //if gDcmFileInfo.SOPClassUID = '1.2.840.10008.5.1.4.1.1.77.1.4.1' then if sFileExt = '.MPG' then begin bImgLoadOK := True; gDcmFileInfo.SOPClassUID := '1.2.840.10008.5.1.4.1.1.77.1.4.1'; gDcmFileInfo.TransferSyntaxUID := '1.2.840.10008.1.2.4.100'; end else if sFileExt = '.MP4' then begin bImgLoadOK := True; gDcmFileInfo.SOPClassUID := '1.2.840.10008.5.1.4.1.1.77.1.4.1'; gDcmFileInfo.TransferSyntaxUID := '1.2.840.10008.1.2.4.102'; end else if sFileExt = '.JPG' then begin jpgA.LoadFromFile(gSourceExamFile); jpgA.SaveToStream(msJPG); bImgLoadOK := True; end else if (sFileExt = '.BMP') or (sFileExt = '.PCX') or (sFileExt = '.PNG') or (sFileExt = '.PSD') or (sFileExt = '.TGA') or (sFileExt = '.TIF') then begin bmpA := TBitmap.Create; try GetImageFromFile(gSourceExamFile, bmpA); if (bmpA.Width > 1) and (bmpA.Height > 1) then begin if bmpA.PixelFormat <> pf24Bit then bmpA.PixelFormat := pf24Bit; jpgA.Assign(bmpA); jpgA.SaveToStream(msJPG); bImgLoadOK := True; end else begin WriteLogText(10, 'W', 'Load GetImageFromFile(' + gSourceExamFile + ') failed'); end; except on e:exception do begin WriteLogText(0, 'E', 'Load ESFile image(' + ExtractFileExt(ExtractFileName(gSourceExamFile)) + ') error : ' + e.Message); end; end; bmpA.Free; end else begin WriteLogText(10, 'E', 'Image type [' + ExtractFileExt(ExtractFileName(gSourceExamFile)) + '] not supported'); end; except on e:exception do begin WriteLogText(0, 'E', 'Load ESFile image error : ' + e.Message); end; end; end else WriteLogText(10, 'W', 'ESFile(' + gSourceExamFile + ') not exists'); end; if (bImgLoadOK = False) and gDebugConvert then begin WriteLogText(44, 'I', 'DebugConvert : Converting temp image'); bmpA := TBitmap.Create; bmpA.Width := 512; bmpA.Height := 512; bmpA.PixelFormat := pf24Bit; bmpA.Canvas.Brush.Color := clBlack; bmpA.Canvas.Pen.Color := clRed; bmpA.Canvas.Font.Size := 28; bmpA.Canvas.Font.Color := clRed; bmpA.Canvas.FillRect(Rect(0, 0, bmpA.Width, bmpA.Height)); sDebugInfo := 'DfcImgz.Debug'; iW := bmpA.Canvas.TextWidth(sDebugInfo); iH := bmpA.Canvas.TextHeight(sDebugInfo); bmpA.Canvas.TextOut((bmpA.Width - iW) div 2, (bmpA.Height - iH) div 2, sDebugInfo); sDebugInfo := FormatDateTime('yyyy-MM-dd hh:nn:ss.zzz', Now); bmpA.Canvas.Font.Size := 16; iW := bmpA.Canvas.TextWidth(sDebugInfo); iH := bmpA.Canvas.TextHeight(sDebugInfo); bmpA.Canvas.TextOut((bmpA.Width - iW) div 2, (bmpA.Height - iH) div 2 + 36, sDebugInfo); jpgA.Assign(bmpA); jpgA.SaveToStream(msJPG); bImgLoadOK := True; bmpA.Free; msJPG.SaveToFile(gAppPath + 'DCMOUT_' + FormatDateTime('yyyyMMdd_hhnnss_zzz', Now) + '.jpg'); end; if bImgLoadOK then begin if gDcmFileInfo.SOPClassUID = '1.2.840.10008.5.1.4.1.1.77.1.4.1' then begin msJPG.LoadFromFile(gSourceExamFile); iW := nVideoWidth; iH := nVideoHeight; WriteLogText(44, 'I', 'Processing video with picture size : ' + IntToStr(iW) + 'x' + IntToStr(iH) + ', data size : ' + IntToStr(msJPG.Size) + ' bytes'); end else begin WriteLogText(44, 'I', 'Processing image with picture size : ' + IntToStr(jpgA.Width) + 'x' + IntToStr(jpgA.Height) + ', data size : ' + IntToStr(msJPG.Size) + ' bytes'); iW := jpgA.Width; iH := jpgA.Height; jpgA.Free; end; //gDcmFileInfo.ImageBuffAddress := 0; //gDcmFileInfo.ImgSamplePixel := 1; //gDcmFileInfo.ImgBitAllocated := 8; //gDcmFileInfo.ImgBitHigh := 7; //gDcmFileInfo.ImgWidth := 512; //gDcmFileInfo.ImgHeight := 512; //gDcmFileInfo.ImagePhotometricInterpretation := 'MONOCHROME2'; gDcmFileInfo.ImgSamplePixel := 3; gDcmFileInfo.ImgBitAllocated := 8; gDcmFileInfo.ImgBitHigh := 7; gDcmFileInfo.ImgWidth := iW; gDcmFileInfo.ImgHeight := iH; if gWriteYBRColor = 1 then gDcmFileInfo.ImagePhotometricInterpretation := 'YBR_FULL_422' else gDcmFileInfo.ImagePhotometricInterpretation := 'RGB'; if gDcmFileInfo.ImageNumber < 0 then gDcmFileInfo.ImageNumber := 1; gDcmFileInfo.AcquisitionNumber := IntToStr(gDcmFileInfo.ImageNumber); //gDcmFileInfo.ImageWinCenter := 128; //gDcmFileInfo.ImageWinWidth := 256; gDcmFileInfo.ImageBuffAddress := Integer(msJPG.Memory); gDcmFileInfo.ImageBuffSize := msJPG.Size; gDcmFileInfo.ImageCompressed := True; if Length(gDcmFileInfo.Modality) < 1 then gDcmFileInfo.Modality := 'OP'; //gDcmFileInfo.StudyDescription := 'OCT Scan'; //gDcmFileInfo.SeriesDescription:= 'Scan Sequence 1'; //gDcmFileInfo.StudyID := '1001'; //gDcmFileInfo.SeriesNumber := '2001'; if Length(gDcmFileInfo.StudyDate) < 1 then gDcmFileInfo.StudyDate := FormatDateTime('yyyyMMdd', Now); if Length(gDcmFileInfo.SeriesDate) < 1 then gDcmFileInfo.SeriesDate := gDcmFileInfo.StudyDate; if Length(gDcmFileInfo.ImageDate) < 1 then gDcmFileInfo.ImageDate := gDcmFileInfo.StudyDate; if Length(gDcmFileInfo.StudyTime) < 1 then gDcmFileInfo.StudyTime := FormatDateTime('hhnnss', Now); if Length(gDcmFileInfo.SeriesTime) < 1 then gDcmFileInfo.SeriesTime := gDcmFileInfo.StudyTime; if Length(gDcmFileInfo.ImageTime) < 1 then gDcmFileInfo.ImageTime := gDcmFileInfo.StudyTime; //gDcmFileInfo.ImagePixelSpacing:= '0.000000\0.000000 '; //if Length(gDcmFileInfo.PatientName) < 1 then //gDcmFileInfo.PatientName := '佚名'; //if Length(gDcmFileInfo.PatientID) < 1 then //gDcmFileInfo.PatientID := GetRndStr(10); //if Length(gDcmFileInfo.PatientDOB) < 1 then //gDcmFileInfo.PatientDOB := GetRndDateStr(100); //if Length(gDcmFileInfo.PatientSex) < 1 then //gDcmFileInfo.PatientSex := 'M'; if Length(gTargetDcmFile) < 1 then begin gTargetDcmFile := 'DCMOUT_' + FormatDateTime('yyyyMMdd_hhnnss_zzz', Now) + '.dcm'; WriteLogText(44, 'I', 'Start convert target file [' + gTargetDcmFile + ']'); if gDebugConvert then Result := SaveDcmFile(gAppPath + gTargetDcmFile, gDcmFileInfo); end else begin WriteLogText(44, 'I', 'Start convert target file [' + StringReplace(gTargetDcmFile, '%ImageInstanceUID%', '%SOPInstanceUID%', [rfReplaceAll, rfIgnoreCase]) + ']'); if Pos('%IMAGEINSTANCEUID%', UpperCase(gTargetDcmFile)) < 1 then begin if FileExists(gTargetDcmFile) then DeleteFile(gTargetDcmFile); end; Result := SaveDcmFile(gTargetDcmFile, gDcmFileInfo); end; end else begin WriteLogText(10, 'W', 'JPEG image data not ready'); jpgA.Free; end; msJPG.Free; WriteLogText(44, 'I', 'ProcessImgDSP done'); end; procedure ReadConfigFile(aIniFile: string); var iCfg : TIniFile; begin iCfg := TIniFile.Create(aIniFile); try gLogLevel := iCfg.ReadInteger('DfcImgz', 'LogLevel', 0); nVideoHeight := StrToIntDef(iCfg.ReadString('DfcImgz', 'VideoHeight', IntToStr(nVideoHeight)), nVideoHeight); nVideoWidth := StrToIntDef(iCfg.ReadString('DfcImgz', 'VideoWidth', IntToStr(nVideoWidth)), nVideoWidth); gWriteYBRColor := StrToIntDef(iCfg.ReadString('DfcImgz', 'WriteYBRColor', IntToStr(gWriteYBRColor)), gWriteYBRColor); gDcmCharacterSet := iCfg.ReadString('DfcImgz', 'DcmCharacterSet', gDcmCharacterSet); gDcmUIDPreFix := iCfg.ReadString('DfcImgz', 'DcmUIDPreFix', gDcmUIDPreFix); gDcmWriteNullPIID := Str2BoolDef(iCfg.ReadString('DfcImgz', 'DcmWriteNullPIID', '1'), gDcmWriteNullPIID); gDcmWriteSeriesDescription := Str2BoolDef(iCfg.ReadString('DfcImgz', 'DcmWriteSeriesDescription', ''), gDcmWriteSeriesDescription); gDcmMemDump := Str2BoolDef(iCfg.ReadString('DfcImgz', 'MemDump', '0'), gDcmMemDump); except end; iCfg.Free; if gLogLevel < 0 then gLogLevel := 0; if gLogLevel > 100 then gLogLevel := 100; if gLogLevel = 44 then gDebugOutput := True; end; begin ExitCode := 9999; SetErrorMode(SEM_FAILCRITICALERRORS or SEM_NOGPFAULTERRORBOX or SEM_NOOPENFILEERRORBOX); try CoInitialize(nil); gPSInStr := ''; gPPInStr := ''; gLogLevel := 10; gAppFile := ParamStr(0); gAppPath := ExtractFilePath(gAppFile); gAppFile := ExtractFileName(gAppFile); gLogFile := ChangeFileExt(gAppFile, '.log'); gCfgFile := gAppPath + ChangeFileExt(gAppFile, '.ini'); gWriteYBRColor := 1; //gSourceStoreFiles := TStringList.Create; gDcmCharacterSet:= ''; gSourceExamFile := ''; gTargetDcmFile := ''; gDcmUIDPreFix := DICOM_UIDPRE_HEAD; gDcmWriteSeriesDescription := True; gDcmWriteNullPIID := True; gTaskInitP1 := True; gTaskInitP2 := False; gDcmMemDump := False; gDeleteESFOnPE := False; gDebugOutput := False; gDebugConvert := False; nVideoHeight := 480; nVideoWidth := 720; gLogWriteMutex := CreateMutex(nil, False, 'hmDfcImgzLogwMutex'); ReleaseMutex(gLogWriteMutex); ExitCode := 9000; Randomize; if FileExists(gCfgFile) then ReadConfigFile(gCfgFile); WriteLogText(44, 'I', '.'); WriteLogText(44, 'I', 'Application started'); WriteLogText(44, 'I', 'Application ParamCount=' + IntToStr(ParamCount)); if ParamCount > 1 then begin ExitCode := 8000; //参数1(选项信息): //参数2(文件信息): gPPInStr := ParamStr(1); gPSInStr := ParamStr(2); if ParamCount > 2 then begin for nI := 3 to ParamCount do begin if (UpperCase(ParamStr(nI))='/DEBUGCONVERT') or (UpperCase(ParamStr(nI))='-DEBUGCONVERT') then begin gDebugConvert := True; WriteLogText(44, 'I', 'Application DebugConvert=True'); end else if (UpperCase(ParamStr(nI))='/DEBUGOUTPUT') or (UpperCase(ParamStr(nI))='-DEBUGOUTPUT') then begin gDebugOutput := True; WriteLogText(44, 'I', 'Application DebugOutput=True'); end; end; end; end; ClearDcmFileInfo(gDcmFileInfo); if Length(gPPInStr) < 30 then InitXMLP1Info('') else begin if gDebugOutput then begin WriteLogText(44, 'D', DecStr(gPPInStr, '')); WriteLn(DecStr(gPPInStr, '')); end; InitXMLP1Info(DecStr(gPPInStr, '')); ExitCode := 7000; end; if Length(gPSInStr) < 30 then begin if gDebugConvert then begin gPSInStr := ''; //gPSInStr := ''; WriteLn(gPSInStr); gPSInStr := EncStr(gPSInStr, ''); InitXMLP2Info(DecStr(gPSInStr, '')); end; end else begin if gDebugOutput then begin WriteLogText(44, 'D', DecStr(gPSInStr, '')); WriteLn(DecStr(gPSInStr, '')); end; InitXMLP2Info(DecStr(gPSInStr, '')); ExitCode := 6000; end; ExitCode := 2000; if ProcessImgDSP then begin ExitCode := 1000; if gDeleteESFOnPE then begin if Length(gSourceExamFile) > 0 then begin if FileExists(gSourceExamFile) then DeleteFile(gSourceExamFile); end; end; end else ExitCode := 1999; //gSourceStoreFiles.Free; CoUnInitialize; WriteLogText(44, 'I', '..'); except ExitCode := 9998; end; //Readln; end.