Текущий архив: 2004.05.16;
Скачать: CL | DM;
ВнизНизкоуровневый доступ к файлам Найти похожие ветки
← →
hiperLogun © (2004-04-27 01:15) [0]Подскажите пожалуста как мне из файла прочитать эдак 1мб данных и записать их в другой файл. А то сижу вот долбаюсь, заклинило чегото, не сооброжу ни как
← →
Германн © (2004-04-27 02:08) [1]А причем тут именно низкоуровневый доступ? Уточни.
← →
Mim1 © (2004-04-27 05:21) [2]Самый низкий уровень, это когда разбираеш винчестер и отверткой пытаешся считать информацию.
После трехчасового боя Каспаров победил суперкомпьютер и с двумя жизнями перешел на второй уровень.
Для работы с файлами в Delphi можно использовать
tfilestream, а так же api функции openfile. Так что в delphi есть встроенные способы работы с файлами аналагочные turbo pascal. Какой для вас уровень более низок решать вам. В любом случае работа будет идти через api. Сабжевая операционка иначе не позволит.
← →
uny (2004-04-27 10:49) [3]без всяких проверок, сама идея:)))
var df,df2:string; d,d2,si:integer; s:tsearchrec; ph:pchar;
begin
df:="полное имя файла источника";
df2:="полное имя файла приёмника";
si:=1024; //сколько байт нужно скопировать
if findfirst(df,faanyfile,s)=0 then begin
d:=fileopen(df,fmopenread);
d2:=filecreate(df2);
getmem(ph,si);
fileread(d,ph^,si);
filewrite(d2,ph^,si);
findclose(s);
fileclose(d);
fileclose(d2);
end else showmessage("тю");
end;
← →
tesseract © (2004-04-27 10:55) [4]ну не fileread а bufferread /bufferwrite, и файл окрывается нетипизированыый - на фига открывать TfileStream? из-за любви к объектам?
← →
ASMiD © (2004-04-27 10:55) [5]
> if findfirst(df,faanyfile,s)=0 then begin
А это что за монстр?
← →
uny (2004-04-27 11:02) [6]храждане, вы чего?))))))
где stream? чем лучше эти bufferreadы? findfirst - открываем же файл, а вдруг его нету, проверка, и размер можно узнать.
а любовь к объектам есть, только не из программирования:))
← →
uny (2004-04-27 11:03) [7]freemem(ph) забыл
← →
ASMiD © (2004-04-27 11:08) [8]
> uny
А не проще-ли FileExists?
← →
uny (2004-04-27 11:12) [9]FileExists тоже размер даёт, да? мне размер всегда нужен, если не нужен то наверно проще, ведь когда копируешь откуда то не важно что есть данные в файле, важно есть ли сам файл
← →
han_malign © (2004-04-27 11:12) [10]>открываем же файл, а вдруг его нету
- при открытии мы это сразу узнаем((d<>-1)and(d2<>-1){а вдруг df2 есть и заблокирован}), findfirst(и FileExists) здесь совершенно излишни...
← →
han_malign © (2004-04-27 11:17) [11]>FileExists тоже размер даёт, да?
- fileread - возвращает количество реально прочитанных байт, выделять буфер на несколько гигов не есть хорошо - нужно читать/писать буферами меньшего размера(желательно кратного 4096), до тех пор пока данные не кончатся...
← →
uny (2004-04-27 11:24) [12]han_malign
"без всяких проверок, сама идея" - не заметил что ли?
думаю проверки каждый налепит по своему желанию, что fileread возвращает я знаю, всегда ставлю прикольные showmessage что бы выводились. не для всех программирование работа, некоторые развлекаются так:))
← →
Гаврила (2004-04-27 11:37) [13]А зачем проверки?
Читаем FileStream-ом 1 мегабайт без всяких проверок.
FileStream сам все проверит и даст по ушам, если что не так
← →
uny (2004-04-27 11:39) [14]Гаврила - покажите?
← →
panov © (2004-04-27 12:05) [15]var
fsIn,fsOt: TFileStream;
begin
try
fsIn := TFileStream.Create("File1.exe",fmOpenRead);
except
ShowMessage("File not exists!");
Exit;
end;
try
fsOut := TFileStream.Create("File2.exe",fmCreate);
except
ShowMessage("Cannot create file");
fsIn.Free;
Exit;
end;
try
fsOut.CopyFrom(fsIn,fsIn,Size);
except
ShowMessage("Cannot copy file");
end;
fs1.Free;
fs2.Free;
end;
Страницы: 1 вся ветка
Текущий архив: 2004.05.16;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.03 c