![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как перевести на WinAPI? [D7, WinXP]
_HAWK_ © (2006-06-07 07:03:00)Привет всем! Вопрос к тем, кто знает WinAPI. У меня вопрос такого характера: имеется процедура:
var
D: Byte;
I: Integer;
F, K: TStream;
begin
if OpenF.Execute then
begin
F := TFileStream.Create(OpenF.FileName,fmOpenRead);
K := TFileStream.Create('Decode.dat',fmCreate);
ProgressBar.MaxValue := F.Size;
for I := 0 to F.Size - 1 do
begin
F.Position := I;
K.Position := I;
F.Read(D,1);
D := D-((I*85)-I+12345+28*I+(2*I+5-I-1));
K.Write(D,1);
ProgressBar.Progress := I;
Application.ProcessMessages;
if Application.Terminated then Break;
end;
ProgressBar.Progress := I;
K.Free;
F.Free;
ProgressBar.Progress:= 0;
ListBox.Items.LoadFromFile('Decode.dat');
if FileExists('Decode.dat') then
DeleteFile('Decode.dat');
end;
ListBox.ItemIndex := 0;
ListBoxClick(nil);
Можно ли перевести ее на чисты WinAPI?
Игорь Шевченко (2006-06-07 15:15:00) [1]CopyFileEx
evvcom (2006-06-07 11:11:00) [2]
> han_malign © (07.06.06 10:54) [7]
Угу. А еще он использует TApplication, TProgressBar, TListBox и наверняка TForm.
han_malign (2006-06-07 10:54:00) [3]
> первую строчку можно убрать, ибо этого никто не увидит, потому что перерисовки между первой и последней строчкой нет.
- посмотри реализацию ProgressBar и удивись...
> помоги пожалуйста, буду весьма признателен...
CreateFile
GetFileSize
SetFilePointer
ReadFile
WriteFile
...
CloseHandle
evvcom (2006-06-07 09:03:00) [4]
> Если знаешь как, помоги пожалуйста, буду весьма признателен...
Ты думаешь, я мазохист? Или мне делать от скуки нечего? Дядька Борланд кучу классов-надстроек над WinAPI написал, чтобы нам жить легче было, а ты хочешь rollback сделать? Без меня...
tButton (2006-06-07 08:56:00) [5]
> А вообще можно перевести этот код без потери работоспособности?
а что тут переводить?
заменить вызов одних функций другими?
а оно нужно?
_HAWK_ (2006-06-07 08:56:00) [6]
> Можно. Но мучительно долго...
Если знаешь как, помоги пожалуйста, буду весьма признателен...
evvcom (2006-06-07 08:52:00) [7]
> А вообще можно перевести этот код без потери работоспособности?
Можно. Но мучительно долго...
Можно и Windows на чистом ассемблере переписать. :-) Рискнешь?
_HAWK_ (2006-06-07 08:11:00) [8]А вообще можно перевести этот код без потери работоспособности?
tButton (2006-06-07 07:28:00) [9]
> ProgressBar.Progress := I;
> K.Free;
> F.Free;
> ProgressBar.Progress:= 0;
первую строчку можно убрать, ибо этого никто не увидит, потому что перерисовки между первой и последней строчкой нет.