Rifat писал(а):
Да, только файлы бывают и по 5 Гб и больше, а память адресовать можно только 2 Гб. Files.File может работать с такими большими файлами?
Ээээ.... чтение блоками/порциями никто не отменял. Да и, в обычных системах (не встроенке) априори считается, что дисковой памяти заведомо больше, чем оперативной по понятным экономическим соображениям.
А при правильно построенной абстракции -- оперативная память отображается на дисковую, либо через прямое отображение (и это, имхо, наиболее правильный вариант), либо как отдельная область линейной памяти за концом дисковой памяти (но опять же, программист об этом знать не должен, поэтому это менее правильный вариант абстракции по моему разумению).
Здесь нельзя путать понятия "аппаратная адресация" и "логическая адресация". Если абстракция не течёт -- то о таких мелочах программист не будет думать от слова "вообще". Хотя, если программист захочет САМ, то конечно, он может при таком желании покопаться в кишках этого механизма. Но ни один грамотный специалист в добром здравии не захочет этого делать.
Тип LONGINTEGER -- 8 байт 2^64=18446744073709551616 (18 * 1024^6)(16 эксабайт или 8 эксабайт в обе стороны при индексном позиционировании от центра) , NTFS позволяет файлы 8 эксабайт, Ext4 -- 16 терабайт. Так что, гигабайты уже кажутся смешными и проблема вычислительной мощности опять упирается в проблему ввода/вывода)) Компонентный Паскаль со всеми проверками и огребаниями памяти от мусора всё-равно будет быстрее чем дисковый ввод вывод))