| Код |
uses Windows,Messages,SysUtils,Classes,Dialog;
//....
var hDest: TextFile; FileScr,FileDest: array[0..MAX_PATH-1] of Char; ScrStr, DestStr: string; FLoad: TStringList; begin ///.... WM_COMMAND : begin if LOWORD(wParam) = 1 then // Начать begin GetDlgItemText(hWnd, 5, FileScr, SizeOf(FileScr)); // Начальный файл GetDlgItemText(hWnd, 8, FileDest, SizeOf(FileDest)); // Конечный файл ScrStr := FileScr; DestStr := FileDest; if (ScrStr = '') and (DestStr = '') then begin MessageBox(hWnd, 'Незаполен начальный или конечный файл.', 'Ошибка', MB_ICONWARNING); Exit; end; AssignFile(hDest, DestStr); ReWrite(hDest); FLoad := TStringList.Create; try FLoad.LoadFromFile(ScrStr); {строка "Всего строк в файле: "} SetDlgItemText(hWnd, 16, PChar(IntToStr(FLoad.Count))); //ProgressBar1.Max := FLoad.Count; for I := 0 to FLoad.Count - 1 do begin UpdateWindow(hWnd); //K := 0; for J := I + 1 to FLoad.Count - 1 do begin UpdateWindow(hWnd); if IsDlgButtonChecked(hWnd, 13) = 1 then begin {С учётом регистра} if (CompareString(LOCALE_USER_DEFAULT, 0, PChar(FLoad[I]), Length(FLoad[I]), PChar(FLoad[J]), Length(FLoad[J])) - 2) = 0 then K := K + 1; end else begin {Без учёта регистра} if (CompareString(LOCALE_USER_DEFAULT, NORM_IGNORECASE, PChar(FLoad[I]), Length(FLoad[I]), PChar(FLoad[J]), Length(FLoad[J])) - 2) = 0 then K := K + 1; end; end; if K = 0 then begin WriteLn(hDest, FLoad[i]); Stroki := Stroki + 1; end {Индикатор выполнения работы} //ProgressBar1.Position := frmWork.ProgressBar1.Position+1; //Label7.Caption:=FloatToStrF(frmWork.ProgressBar1.Position/frmWork.ProgressBar1.Max*100,ffFixed,3,2)+'%'; // frmWork.Label5.Caption := IntToStr(FLoad.Count);{строка "Всего строк в файле: "} {end} else exit; SetDlgItemText(hWnd, 18, PChar(IntToStr(Stroki))); {Удалено дубликатов строк} end; finally CloseFile(hDest); if k = 0 then MessageBox(hWnd, PChar('Операция завершена.'+#10#13+ 'Всего строк в файле: ' {+ Label5.Caption} + #10#13+ 'Удалено одинаковых строк: ' {+ frmWork.Label6.Caption} + #10#13+ 'Программа использовала памяти: ' {+ frmWork.Label9.Caption} + #10#13+ 'Прошло времени работы: ' {+ frmWork.TimeOut.Caption} + #10#13),'Информация',MB_ICONINFORMATION); end
|
.... Как это можно перевести полностю на WinAPI не используя AssignFile вместо этого CreateFile а так же без TStringList  ? Это сообщение отредактировал(а) PandoraBox_2007 - 7.1.2008, 17:10
Присоединённый файл ( Кол-во скачиваний: 2 )
DublicateCleaner_2.0.rar 7,88 Kb
|