Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.5 MB
Время: 0.036 c
1-1083323415
АЛЛАМИТ
2004-04-30 15:10
2004.05.16
MDI приложение


3-1082364543
Oleg_B
2004-04-19 12:49
2004.05.16
Шифрование/защита таблиц


3-1082614692
jenya_d
2004-04-22 10:18
2004.05.16
Средства разработчика БД MS SQL 2000


7-1081073322
NV-VETAL
2004-04-04 14:08
2004.05.16
DCOM. Как зарегистрировать клиента с помощью реестра?


4-1080544622
Akvilon
2004-03-29 11:17
2004.05.16
окно выбора папки