Головна сторінка
Top.Mail.Ru Яндекс.Метрика
Форум: "Початківцям";
Поточний архів: 2018.04.08;
Завантажити: [xml.tar.bz2];

Вниз

Файл 4 гігабайти Знайти схожі гілки


Аши   (2016-04-14 08:43) [0]

Пишеться файл, FileCreate (File, fmShareDenyWrite); ... ... FileWrite (File, Arr [0], Len);
Коли файл досягає в розмірі 4 + гігабайти, він перестає рости, хоча програма продовжує працювати, і навіть монітор процесів показує що йде читання і запис.
Чому так? Варто 7-я вінда 64 біт, максимальний розмір файлу в ній може перевищувати 4 гіга, так що проблема напевно не в ній. Тоді чому так?



sniknik ©   (2016-04-14 10:17) [1]

мабуть в тих функціях / Дельфе що ти користуєшся ще старі типи визначення розміру / позиції, DWORD на кшталт. в них якраз на 4 гіга байт визначається далі йде переповнення і фактично переписування файлу з початку ... ну або подібне, дивлячись як у тебе там зроблено.



Игорь Шевченко ©   (2016-04-14 10:37) [2]


> Чому так?


Людина теж перестає рости з часом. І файл ...



Quant   (2016-04-14 11:24) [3]


> Варто 7-я вінда 64 біт, максимальний розмір файлу в ній
> Може перевищувати 4 гіга


Максимальний розмір файлу не залежить від битности ОС! про ___ 0
ФС яка на Фіске? Ваші функції вміють працювати з "великими файлами"?
А просто перемикатися на (робити) новий файл коли він доходить до 4гб?



dmk ©   (2016-04-14 12:40) [4]

SetFilePointerEx



Аши   (2016-04-14 13:22) [5]


> ФС яка на Фіске? Ваші функції вміють працювати з "великими файлами"?

NTFS


> А просто перемикатися на (робити) новий файл коли він доходить до 4гб?

не зручно для подальшого читання)


> Мабуть в тих функціях / Дельфе що ти користуєшся ще старі
> Типи визначення розміру / позиції, DWORD на кшталт. в них як
> Раз на 4 гіга байт визначається далі йде переповнення
> І фактично переписування файлу з початку ... ну або подібне,
> Дивлячись як у тебе там зроблено


ну судячи по писанню там всюди Integer

А як мені це робити виправити якщо функція не може обробляти великі файли?)



DVM ©   (2016-04-14 13:39) [6]


> А як мені це робити виправити якщо функція не може обробляти
> Великі файли?)

Версія Delphi яка?



sniknik ©   (2016-04-14 13:56) [7]

> Ну судячи по писанню там всюди Integer
тоді було б обмеження в 2гіга ... але можливо, воно зовні знакова, а всередині немає, тоді все рівно виходить - максимум 4 гіга.
в кінці кінців буде число 4294967295 або -1 це тільки від інтерпретації залежить, фізично вони рівні ... $ FFFFFFFF.

шукай інші / міняй функції / версію.



Quant   (2016-04-14 14:08) [8]

Як як. Писати на API або знайти бібліотеку-обгортку або перейти на нову версію IDE.



sniknik ©   (2016-04-14 14:19) [9]

D7>
function THandleStream.Seek (const Offset: Int64; Origin: TSeekOrigin): Int64;
що то мені підказує справа не версії.



KSergey ©   (2016-04-14 14:50) [10]

Ось так можна писати файли більше 4 ГБ

real_len: Integer; fwritten: DWORD; DistanceToMoveHigh: Longint; real_len: = ...... DistanceToMoveHigh: = 0; SetFilePointer (LogFile, 0, @ DistanceToMoveHigh, FILE_END); WriteFile (LogFile, log_buf_str [1], real_len, fwritten, nil);



han_malign ©   (2016-04-14 16:49) [11]


> SetFilePointer

- пофіг, створення і запис до переможного кінця - не вимагає маніпуляцій з поточним покажчиком читання / запису ...
FileXxx - це тривіальна оболонка для Windows.XxxFile без будь-яких засідок (з розгалуженням для POSIX open / read / write під Linux)

> І навіть монітор процесів показує що йде читання і запис.

- правильне питання - як ти визначаєш розмір файлу...



Игорь Шевченко ©   (2016-04-14 17:20) [12]

han_malign © (14.04.16 16: 49) [11]

Ти занадто багато хочеш від початківців :))



KSergey ©   (2016-04-14 17:32) [13]

> Han_malign © (14.04.16 16: 49) [11]

Можна розшифрувати цей потік?



Аши   (2016-04-14 17:33) [14]


> Версія Delphi яка?

Delphi 10 Seattle

не розумію чому Делфі не хоче приймати WriteFile. Лається. Каже занадто багато вказаних параметрів, якщо вказувати їх по ...
BOOL WriteFile (HANDLE hFile, // власне покажчик на файл LPVOID lpBuffer, // покажчик на буфер - звідки записуємо дані в файл DWORD nNumberOfBytesToWrite, // обсяг записуваних даних LPDWORD lpNumberOfBytesWrite, // фактичний розмір записаних даних LPOVERLAPPED lpOverlapped // прапор режиму доступу до файлу: асинхронний (FILE_FLAG_OVERLAPPED) // або синхронний (NULL) );



Аши   (2016-04-14 17:39) [15]

Ось так пишу і ось так визначаю довжину файлу.

procedure TForm1.WriteFile; const BuffSize = 10000; var DBFile, TFile: String; TargetFile, DataBFile: THandle; Arr: array of Byte; SizeFile, SizeBase: longint; len, Err, i: integer; FileEx: bool; begin FileEx: = false; DBFile: = "d: \ 1 \ data.f"; for I: = 0 to ListBox1.Items.Count-1 do begin TFile: = ListBox1.Items.Strings [i]; Form1.Caption: = ListBox1.Items.Strings [i]; TargetFile: = FileOpen (TFile, fmOpenRead + fmShareDenyWrite); if FileExists (DBFile) then begin FileEx: = true; DataBFile: = FileOpen (DBFile, fmOpenWrite); end else DataBFile: = FileCreate (DBFile, fmShareDenyWrite); SetLength (Arr, BuffSize); try SizeFile: = FileSeek (TargetFile, 0, 2); FileSeek (TargetFile, 0, 0); if FileEx = true then FileSeek (DataBFile, 0, 2); while FileSeek (TargetFile, 0, 1) <SizeFile do begin len: = FileRead (TargetFile, Arr [0], BuffSize); FileWrite (DataBFile, Arr [0], len); end; finally FileClose (TargetFile); FileClose (DataBFile); end; end; end;



Игорь Шевченко ©   (2016-04-14 18:02) [16]


> Ось так пишу і ось так визначаю довжину файлу.


Неправильно визначаєш. Визначай провідником.



sniknik ©   (2016-04-14 18:16) [17]

перевантажуються функції залежать від використовуваних тобою типів, наприклад
function FileSeek (Handle, Offset, Origin: Ціле число): Ціле число; overload;
function FileSeek (Handle: Integer; const Offset: Int64; Origin: Integer): Int64; overload;
константи без вказівки на кшталт будуть Інтеджер ...

хочеш великих файлів використовуй великі розміри.

+
нафіга в циклі перевідкривати TargetFile? винеси за цикл ...

++
що ти тут взагалі робиш ??? сенс.



Quant   (2016-04-14 18:24) [18]

DBFile треба винести. Або передавати параметром в цю функцію або брати з TEdit або на худий кінець в константи модуля.
TFile - префіксом T позначаються Класи. Перейменуйте в какой-нить CurrentFile.
Навіщо вам THandle і FileOpen? Візьміть вже хоча б TFileStream.



Аши   (2016-04-14 19:12) [19]


> Ігор Шевченко © (14.04.16 18: 02) [16]
>>
>> Ось так пишу і ось так визначаю довжину файлу.
>>
> Неправильно визначаєш. Визначай провідником.


пам'ятається років так 5 тому ти допомагав тут людям, а зараз тільки нісенітниця пишеш в нуботемах) або це тільки мені так пощастило?)))


> Quant


> DBFile треба винести. Або передавати параметром в цю функцію
> Або брати з TEdit або на худий кінець в константи модуля.


це начерк, тому що ні коли не працював з великими обсягами файлів. Все зводилося максимум до 500 магабайтам лог файлу, і мені цього вистачало позаочі. Естесвтенно потім такі змінні як назви і адреси файлів будуть передаватися в оформлену процедуру.

> TFile - префіксом T позначаються Класи. перейменуйте в
> Какой-нить CurrentFile.

TFile - назвав так так TargetFile. Зовсім забув про позначення класів, та й Делфі не лаявся. Я в Екліпс звик сидіти, там вільно користувався такою змінною, і за звичкою її і тут вліпив. Перейменують.

> Навіщо вам THandle і FileOpen? Візьміть вже хоча б TFileStream.

Витівка в тому, що перед записом буде робитися НЕ для масиву байт, або ще якісь маніпуляції з ними. Передача потокового запис на скільки я знаю не потребує масивах. (Або як через неї можна зробити те що мені потрібно).


> Sniknik © (14.04.16 18: 16) [17]
>
> Перевантажуються функції залежать від використовуваних тобою типів,
> наприклад
> Function FileSeek (Handle, Offset, Origin: Integer): Integer;
> Overload;
> Function FileSeek (Handle: Integer; const Offset: Int64;
> Origin: Integer): Int64; overload;
> Константи без вказівки на кшталт будуть Інтеджер ...
>

точно ..... Я жорстко ступив. Спасибо большое :) Тепер все працює))))



Игорь Шевченко ©   (2016-04-14 20:59) [20]

Аши (14.04.16 19: 12) [19]

Якщо у тебе немає мізків задати вірний питання, чому ти дивуєшся?



Rouse_ ©   (2016-04-14 21:45) [21]

Працює, але не так треба, зміни на uint64, а то ще раз натрапиш



Rouse_ ©   (2016-04-14 21:51) [22]

А на Ігоря ти даремно - він тобі стусан дає, а не образити хоче
Мене свого часу що Ігор, що Юра Зотов так копали - еслиб я ображався, ніколи програмістом б не став :)



DVM ©   (2016-04-14 23:11) [23]


> Аши (14.04.16 17: 33) [14]
>
>> Р'РμСЂСЃРёСЏ Delphi РєР ° РєР ° СЏ?
>
> Delphi 10 Seattle
>

Р СЃРїРѕР »СЊР · СѓР№ TFileStream Ре РЅРμ РјСѓС ‡ Р ° Р№СЃСЏ.



Аши   (2016-04-15 11:43) [24]


> Р • СЃР »Ре Сѓ С,РμР ± СЏ РЅРμС, РјРѕР · РіРѕРІ Р · Р ° РґР ° С,СЊ РІРμСЂРЅС <Р№ РІРѕРїСЂРѕСЃ, С ‡ РμРјСѓ С,С <СѓРґРёРІР» СЏРμС € СЊСЃСЏ
>?

РЈ РјРμРЅСЏ РЅРμС, РјРѕР · РіРѕРІ Р · Р ° РґР ° С,СЊ РІРμСЂРЅС <Р№ РІРѕРїСЂРѕСЃ - СЌС,Рѕ РїСЂР ° РІРґР °, РїРѕ С,РѕРјСѓ Ре РїСЂРёС € РμР »СЃСЋРґР °, С ‡ С,Рѕ Р ± С <Р · РЅР ° СЋС ‰ РёРμ Р »СЋРґРё СЂР ° Р · РѕР ± СЂР ° Р» РёСЃСЊ Ре РїРѕРјРѕРіР »Ре). РџРѕС,РѕРјСѓ З ‡ С,Рѕ РѕРЅРё РЅСѓ РіСѓРіР », РєРѕС,РѕСЂС <Р№ РЅРμ РјРѕР¶РμС, РЅР ° Р№С,Рё РєРѕСЃРІРμРЅРЅС <Рμ Р · Р ° РІРёСЃРёРјРѕСЃС,Рё РІ Р · Р ° РїСЂРѕСЃРμ Ре РЅРμ СѓРјРμРμС , РёСЃРєР ° С,СЊ РѕС € РёР ± РєРё РІ РєРѕРґРμ. Р • СЃР »Ре Р ± С <Сѓ РјРμРЅСЏ Р ± С <Р» Ре РјРѕР · РіРё Р · Р ° РґР ° С,СЊ РІРμСЂРЅС <Р№ РІРѕРїСЂРѕСЃ РіСѓРіР »Сѓ - С,Рѕ СЏ Р ± С <РμРіРѕ Ре РЅРμ Р · Р ° РґР ° РІР ° Р », РїРѕС,РѕРјСѓ С ‡ С,Рѕ СЃРєРѕСЂРμРμ РІСЃРμРіРѕ СЃР ° Рј Р ± С <РґРѕРіР ° РґР ° Р» СЃСЏ РіРґРμ РєСЂРѕРμС,СЃСЏ РѕС,РІРμС,) РќСѓ РёР »Ре РїРѕ РєСЂР ° Р№РЅРμР№ РјРμСЂРμ СЃ С,С <С ‡ РєР ° РіСѓРіР »Р °. РќРѕ РІ СЃРёР »Сѓ РІСЃРμРіРѕ РІС <С € РμРёР · Р» РѕР¶РμРЅРЅРѕРіРѕ Ре РІ С ‡ Р ° СЃС,РЅРѕСЃС,Рё С,РѕРіРѕ, С ‡ С,Рѕ Р »СЋРґРё РІ РѕС,Р» РёС ‡ РёРё РѕС, РіСѓРіР »Р ° СѓРјРμСЋС, Р ° РЅР ° Р» РёР · РёСЂРѕРІР ° С,СЊ Ре РЅР ° С ... РѕРґРёС,СЊ РѕС € РёР ± РєРё РґР ° Р¶Рμ РєРѕСЃРІРμРЅРЅС <Рμ, РЅРμ РѕС,РЅРѕСЃСЏС ‰ РёРμСЃСЏ РЅР ° РїСЂСЏРјСѓСЋ Рє РІРѕРїСЂРѕСЃСѓ, РЅР ° РїСЂРёРјРμСЂ СЃРѕРІРμС,С <РїРѕ РѕРїС,РёРјРёР · Р ° С † РёРё - СЏ Ре РїСЂРёС € РμР »(РїРѕРІС,РѕСЂСЋСЃСЊ) СЃСЋРґР °)


> Рђ РЅР ° Р РіРѕСЂСЏ С,С <Р · СЂСЏ - РѕРЅ С,РμР ± Рμ РїРёРЅРѕРє РґР ° РμС,, Р ° РЅРμ РѕСЃРєРѕСЂР ± РёС,СЊ С ... РѕС ‡ РμС,

Р "Р ° СЏ Ре РЅРμ РѕР ± ижР° СЋСЃСЊ, СѓР¶ РЅРμ РјР ° Р» РμРЅСЊРєРёР№) Р СЌС,Рѕ РЅРμ РїРёРЅРѕРє, Р ° СЃРєРѕСЂРμРμ СЃС,С'Р ±) РџРёРЅРѕРє РґР ° РμС, РЅР ° РїСЂР ° РІР »РμРЅРёРμ РґР» СЏ РїРѕРёСЃРєР ° Ре РёР · СѓС ‡ РμРЅРёСЏ, Р ° РμРіРѕ:

> Р§РμР »РѕРІРμРє С,РѕР¶Рμ РїРμСЂРμСЃС,Р ° РμС, СЂР ° СЃС,Рё СЃРѕ РІСЂРμРјРμРЅРμРј. Р С "Р ° Р№Р» ...
....

> РўС <СЃР »РёС € РєРѕРј РјРЅРѕРіРѕ С ... РѕС ‡ РμС € СЊ РѕС, РЅР ° С ‡ РёРЅР ° СЋС ‰ РёС ... :))
....

> РќРμРїСЂР ° РІРёР »СЊРЅРѕ РѕРїСЂРμРґРμР» СЏРμС € СЊ. РћРїСЂРμРґРμР »СЏР№ РїСЂРѕРІРѕРґРЅРёРєРѕРј
...

> Р • СЃР »Ре Сѓ С,РμР ± СЏ РЅРμС, РјРѕР · РіРѕРІ Р · Р ° РґР ° С,СЊ РІРμСЂРЅС <Р№ РІРѕРїСЂРѕСЃ, С ‡ РμРјСѓ С,С <СѓРґРёРІР» СЏРμС € СЊСЃСЏ
>?
....

РЅРμ РґР ° РμС, СЂРѕРІРЅС <Рј СЃС ‡ РμС,РѕРј РЅРё С ‡ РμРіРѕ :) РџСЂРѕСЃС,Рѕ С "Р» СѓРґ Ре СЃС,С'Р ±)


> Р Р ° Р ± РѕС,Р ° РμС,, РЅРѕ РЅРμ С,Р ° Рє РЅР ° РґРѕ, СЃРјРμРЅРё РЅР ° uint64, Р ° С,Рѕ РμС ‰ Рμ СЂР ° Р ·
> РЅР ° С,РєРЅРμС € СЃСЏ

Р'Р »Р ° РіРѕРґР ° СЂСЋ) Р'СЃРμ С,Р ° РєРё СЏ РЅРμР · РЅР ° Р№РєР °. РЎ С ‡ РёСЃР »Р ° РјРё РїСЂРμРІС <С € Р ° СЋС ‰ РёРјРё РґРёР ° РїР ° Р · РѕРЅ int РЅРё РєРѕРіРґР ° РЅРμ РёРјРμР» РґРμР »Рѕ) РЎС,С <РґРЅРѕ, РЅРѕ С,Р ° Рє. РЎРїР ° СЃРёР ± Рѕ)

Р'СЃРμРј СЃРїР ° СЃРёР ± Рѕ, Ре СѓРґР ° С ‡ Ре)



sniknik ©   (2016-04-15 12:06) [25]

> СЃРјРμРЅРё РЅР ° uint64, Р ° С,Рѕ РμС ‰ Рμ СЂР ° Р · РЅР ° С,РєРЅРμС € СЃСЏ
РєРѕРіРґР ° С "Р ° Р№Р» РїРμСЂРμРІР ° Р »РёС, РїРѕ СЂР ° Р · РјРμСЂСѓ РІ 8589934591 РіРёРіР ° Р ± Р ° Р№С,Р ° (8388607 С,РμСЂР ° Р ± Р ° Р№С, ). ;)



Игорь Шевченко ©   (2016-04-15 12:50) [26]

http://segfault.kiev.ua/smart-questions-ru.html



сторінки: 1 вся гілка

Форум: "Початківцям";
Поточний архів: 2018.04.08;
Завантажити: [xml.tar.bz2];

наверх









Пам'ять: 0.67 MB
Час: 0.027 c
6-1286108067
Skyhawk99
2010-10-03 16:14
2018.04.08
Проблема з idHTTP і кореляцій


2-1460381686
Dmk
2016-04-11 16:34
2018.04.08
перевантажується код


15-1470771674
NailMan
2016-08-09 22:41
2018.04.08
Мій перший бойовий девайс на Arduino полетів!


2-1460338110
Abcdef123
2016-04-11 04:28
2018.04.08
Email component


1-1357117761
shopgirl1987
2013-01-02 13:09
2018.04.08
Автоматичний прийом WM-платежів і Delphi





африкаанс албанський арабська вірменин азербайджанець баскський білоруський болгарська каталонський Китайська (спрощене письмо) Китайський традиційний) хорватський чеська данську мову нідерландський Ukranian естонець Філіппінська фінську мову французький
галісійська грузинський німецький грецький гаїтянський креольський давньоєврейську хінді угорський ісландський індонезієць ірландський італійський японський корейський латиська литовець македонець малайський мальтійський норвежець
перс полірування португальська румунський російська сербський словацький словенський іспанська суахілі шведську мову тайський турецька український урду в&#39;єтнамський валлійський ідиш бенгальський боснійський
кебуано есперанто гуджараті хауса хмонг ігбо яванський каннада кхмерская Лао латинь маорі маратхі монгольський непальська панджабі сомалійський тамільська телугу йоруба
зулуський
Англійська Французький Німецький Італійський Португальська Русский Іспанська