Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.05.16;
Скачать: [xml.tar.bz2];

Вниз

Низкоуровневый доступ к файлам   Найти похожие ветки 

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.033 c
3-1082701328
Урмат
2004-04-23 10:22
2004.05.16
Как в ADOTable ограничить добавление записи


9-1072642249
Igoryok
2003-12-28 23:10
2004.05.16
PolyBezier или как сделать кривую как в нормально графическом рет


3-1082353591
ЮЮ
2004-04-19 09:46
2004.05.16
Клиент на Win2000 захватывает файлы БД на NetWare


3-1082382334
Zn
2004-04-19 17:45
2004.05.16
Operation cancelled at user s request.


3-1082465433
Visnuk
2004-04-20 16:50
2004.05.16
Помогите с ADO





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский