Где Взять класс С++ для работы с файлами более 2Гб.

Тема в разделе "WASM.WIN32", создана пользователем OtD, 19 мар 2005.

Статус темы:
Закрыта.
  1. s0larian

    s0larian New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2004
    Сообщения:
    489
    Адрес:
    Крыжёпполь


    Конечно.





    Смысл в том, что бы собрать все handles, create/close, type conversions и всю остальную win32 чушь типа SetFilePointer (hFile, lDistLow, & lDistHigh, FILE_BEGIN) в одном месте и представить в виде простого и удобного API. Ну и потом эту собранную часть можно использовать ещё раз, не лазя в MSDN.



    Это ComputerScience 101 - и многие опытные програмеры не понимают, что софт должен состоять из слоёв а не кучи глобальных переменных, 500 твоих функций и тучи API calls, разбросанных по всему исходнику, где все всех видят, и все всё вызывают.



    Design состоит не в том что бы не кое-как решить проблему, а в том что бы ввести слои (абстракции). То есть кусок кода разбирающий PE заголовки и секции, не должен знать и беспокоится о том, что, например, при закрытии файла аргументы функции закрытия должны соответствовать аргументам фунции открытия. Ну или о том, что при вызове SetFilePointer() нужно иметь временную переменную и послать указатель....
     
  2. OtD

    OtD Member

    Публикаций:
    0
    Регистрация:
    19 мар 2005
    Сообщения:
    31
    Адрес:
    Алма-Ата, Kazakhstan
    Для s0larian: :)

    " "typedef long long int int64;"

    > Даже если такой абсурд и сработает в каком-то

    > компиляторе :), то кто всю логику сделает.

    Если это абсурд, то возьми какой-нить школьный курс по С и Win32 програмированию!



    Объясняю популярно, то есть для твоего "уровня познания":

    gcc/g++: имеет свой родной 64 bit тип "long long"

    VC6/VC7: предоставляют подобный тип под именем "__int64""[i/]



    Теперь возьми и вставь "typedef long long int int64;" в VC7 и приколись.

    И вобще, при чём тут школьный курс по С, когда речь за С++. И если даже за С, то зачем тогда про g++? И вобще спасибо тебе за снисхождение к моему уровню познания :). Справочку открой и читани что тип __int64 это расширения компилятора, а я ранее говорил что мой компилятор не поддерживает __int64 (Не внимательность, залог ошибок).

    А потом, ниже, :), и как тебе могло в голову прийти что я этого не знаю? Читай верхние топики, там об этом мы с модератором говорили уже.

    И что это за класс с минимальным набором, а куда совместный доступ делся, асинхронность, очередь с приоритетами и многое другое, если бы мне нужен был такой как ты предлагаешь, я бы и вопрос этот не подымал.

    Вопрос темы поставлен корректно.

    Надо помогать друг другу, а не цапаца.



    А с последним твоим топиком полностью согласен. Хорошое видение. Ещё забыл сказать что чтобы потом можно было легко код менять в огромном множестве, и улучшать его.
     
  3. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    OtD

    Какая у тебя _точно_ версия bc5?

    Например, bc5.5 (который free) поддерживает типе __int64.
     
  4. flankerx

    flankerx New Member

    Публикаций:
    0
    Регистрация:
    2 июл 2004
    Сообщения:
    423
    Адрес:
    Moscow, Russia


    Ну да, это просто в разы увеличивает объем работы... особенно реализация логических операций и операций типа +=...





    Натуральные и беззнаковые целые -- это не одно и то же :)
     
  5. rgo

    rgo New Member

    Публикаций:
    0
    Регистрация:
    21 мар 2005
    Сообщения:
    87
    я не понял нужно создание типа int64 через реализацию класса, или самая простая реализация этого типа, или я просто туплю и ничего не понимаю?



    если второе то надо читая доки по компилятору найти 64-bit тип для целого и всё, все операторы '+','-','*' etc будут работать. Если первое так почти тоже самое. А если вернуться к проблеме больших файлов, то надо рыть доки по системной библиотеке, стандартной сишной, win32api или ещё какой. в glibc например существует lseek64, я не знаю есть ли такая функция в libc от M$, но в win32api дожен быть её аналог.
     
  6. OtD

    OtD Member

    Публикаций:
    0
    Регистрация:
    19 мар 2005
    Сообщения:
    31
    Адрес:
    Алма-Ата, Kazakhstan
    Всё ребята, дискуссию про __int64 можно закончить, я перехожу на новый компилятор, убедили.

    Но вопрос по классу для работы с файлами остаётся открытым, класс нужен! Он должен инкапсулировать все возможности Win32, а если ещё будут добавленны новые, например выравнивание для быстрого поиска, буду рад ещё больше.

    Всем заранее спасибо за активность. Жду.
     
  7. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    OtD

    класс нужен! ... должен инкапсулировать все возможности Win32

    :dntknw: Опять старая песня.

    Тебе уже сказали: "2. Что должен делать класс? Функциональность? 3. Предлагаемые методы? ... Ты сначала сам определись, что тебе ... от этого класса нужно" (C) volodya.



    Жду.

    Чего? Готового решения?
     
  8. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев
    OtD

    маленький хинт - такой класс, в силу его простоты (уровня hello integer), трижды никому не нужен, а ждать что тебе его кто-то напишет... наивный чукотский юноша...



    Бери мсдн в зубы и пиши - ты уже неделю тут воду льешь, а там работы на полчаса.
     
  9. OtD

    OtD Member

    Публикаций:
    0
    Регистрация:
    19 мар 2005
    Сообщения:
    31
    Адрес:
    Алма-Ата, Kazakhstan
    q_q

    "Чего? Готового решения?"

    Так ты тему топика читай. Или с русским напряг?



    masquer

    "Бери мсдн в зубы и пиши - ты уже неделю тут воду льешь, а там работы на полчаса."



    :) Вот эти дешовые рисовки оставь при себе. :) Ещё один виртуоз программирования. Полчаса! :)



    masquer

    "трижды никому не нужен,"



    За себя отвечай. Другие сами за себя ответят.

    Из басни: "Мы пахали" - сказала муха, сидя на рогу быка.



    Для всех

    Вопрос топика остаётся в силе. Заранее спасибо.
     
  10. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    OtD

    Так ты тему топика читай.

    Читаю: "Где взять класс ..." Тебе _русским_ языком посоветовали написать самому либо изложить требования, чтобы можно было посоветовать готовое решение. Afaik перечисление тобою методов TFile (в какой это версии bcc есть file.h?) и "инкапсулировать все возможности Win32" ни сколько не пролили свет на требования к классу.



    Или с русским напряг? ... дешовые рисовки

    Не горячись. Imho это не поможет.
     
  11. OtD

    OtD Member

    Публикаций:
    0
    Регистрация:
    19 мар 2005
    Сообщения:
    31
    Адрес:
    Алма-Ата, Kazakhstan
    Для q_q

    Ну чтож тут непонятного?

    Загружен я, вот и не могу написать, как только время появится, напишу.

    Повторюсь, инкапсуляция Win32 подразумевает, сбор в одной области видимости ниже следующих возможностей или их части:

    Microsoft® Win32® Programmer's Reference

    Files:

    Следующие функции использованы для работы с файлами:



    AreFileApisANSI

    CancelIO

    CopyFile

    CopyFileEx

    CopyProgressRoutine

    CreateDirectory

    CreateDirectoryEx

    CreateFile

    CreateIoCompletionPort

    DefineDosDevice

    DeleteFile

    FileIOCompletionRoutine

    FindClose

    FindCloseChangeNotification

    FindFirstChangeNotification

    FindFirstFile

    FindFirstFileEx

    FindNextChangeNotification

    FindNextFile

    FlushFileBuffers

    GetBinaryType

    GetCompressedFileSize

    GetCurrentDirectory

    GetDiskFreeSpace

    GetDiskFreeSpaceEx

    GetDriveType

    GetFileAttributes

    GetFileAttributesEx

    GetFileInformationByHandle

    GetFileSize

    GetFileType

    GetFullPathName

    GetLogicalDrives

    GetLogicalDriveStrings

    GetQueuedCompletionStatus

    GetShortPathName

    GetTempFileName

    GetTempPath

    GetVolumeInformation

    LockFile

    LockFileEx

    MoveFile

    MoveFileEx

    PostQueuedCompletionStatus

    QueryDosDevice

    ReadDirectoryChangesW

    ReadFile

    ReadFileEx

    RemoveDirectory

    SearchPath

    SetCurrentDirectory

    SetEndOfFile

    SetFileApisToANSI

    SetFileApisToOEM

    SetFileAttributes

    SetFilePointer

    SetVolumeLabel

    UnlockFile

    UnlockFileEx

    WriteFile

    WriteFileEx



    Ещё раз. Класс нужен для того чтобы был лёгкий и удобный ПУЛЬТ УПРАВЛЕНИЯ для файлов.
     
  12. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    OtD

    Следующие функции использованы для работы с файлами

    :-(

    Ты издеваешься? Или ты не понимаешь, что среди приведенных тобою функций есть такие, которые не имеют отношения к файлам вообще, а некоторым плевать на размер файла?



    Загружен я, вот и не могу написать ... Класс нужен для того чтобы был лёгкий и удобный ПУЛЬТ УПРАВЛЕНИЯ для файлов.

    Imho ничего тебе не нужно, кроме понтов, что у тебя супер-пупер-класс. Ты даже не можешь сформулировать область его применения.



    Итого: ты не уважаешь участников форума, я пас.
     
  13. OtD

    OtD Member

    Публикаций:
    0
    Регистрация:
    19 мар 2005
    Сообщения:
    31
    Адрес:
    Алма-Ата, Kazakhstan
    Для q_q

    Для тебя специально и написал вот эту строку: "Microsoft® Win32® Programmer's Reference".

    Открой книжку от Windows и читани.



    Imho ничего тебе не нужно, кроме понтов, что у тебя супер-пупер-класс

    А это ты про что?!



    ты не уважаешь участников форума, я пас

    Если ты чувствуешь что тебя не уважают, это не значит что всех.

    Не можешь въехать в вопрос, так и скажи, зачем гадости льёшь. И если имеешь какие домыслы, то обоснуй откуда они, и тебе ответят. Своё незнание превращаешь в фарс. Постыдился бы.
     
  14. masquer

    masquer wasm.ru

    Публикаций:
    0
    Регистрация:
    13 сен 2002
    Сообщения:
    890
    Адрес:
    Николаев








    Я-то за себя отвечу, а твое хамство тебе точно чести не делает. А другие уже ответили - кто молчанием, а кто неудачной попыткой тебе что-то доказать.



    Ты самый умный? Никаких вопросов...
     
  15. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    OtD



    А "Microsoft® Win32® Programmer's Reference" - это что такое?

    Поиск в MSDN ничего не дал :-((((
     
  16. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    OtD

    Для тебя специально и написал вот эту строку ...

    Зачем? Разве написанное тобой проливает какой-нибудь свет на требования к классу?

    Уж поверь мне на слово, что borland’овская справка по winapi не лучшая на сегодняшний день.



    Открой книжку от Windows и читани ... Своё незнание превращаешь в фарс.

    Я читал/читаю разные книги/статьи о программировании под Windows. Где, по-твоему, у меня пробел в знаниях?



    если имеешь какие домыслы, то обоснуй

    Пожалуйста.

    На данный момент я тему интерпретирую так: "Ребята мне нужен класс, но Загружен я, вот и не могу написать его сам, и объяснить вам для чего он нужен тоже некогда, да объяснять собственно и нечего. Берите книжку от Windows читайте, ищите готовый класс или напишите его для меня". У меня такая постановка вопроса ассоциируется с неуважительным отношением.
     
  17. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    S_T_A_S_

    Это справка по winapi из состава bc++5.0x/bcb2.x+/delphi2.x+. Afaik содержит информацию примерно 1997 года.
     
  18. S_T_A_S_

    S_T_A_S_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2003
    Сообщения:
    1.754
    q_q



    Это был вопрос к автору.

    Я не увидел в списке функций DeviceIoControl() :)))
     
  19. OtD

    OtD Member

    Публикаций:
    0
    Регистрация:
    19 мар 2005
    Сообщения:
    31
    Адрес:
    Алма-Ата, Kazakhstan
    masquer

    а твое хамство тебе точно чести не делает

    Я не хамлю, а просто защищаюсь от нападок. Это что такое, простой вопрос задал, а такие издевательства. Твои слова? - наивный чукотский юноша... это что за рассизм? Неужели столько яда в душе? Ни знаешь что ответить, не отвечай, за язык не тянут.



    S_T_A_S_

    А "Microsoft® Win32® Programmer's Reference" - это что такое?



    Это что? Прикол? Если нет, поясняю - The Microsoft® Win32® Programmer's Reference contains the application programming interface (API ) set needed to write applications for Windows® 95 and Windows NT®. This introduction is provided to help you find your way in the Win32 Programmer's Reference portion of the Microsoft Win32 Software Development Kit (SDK). It is divided into the following sections: ... и т.д.



    q_q

    Повторяю тему топика Где взять класс С++ для работы с файлами более 2Гб, Где взять, а не Как написать. Неужели не понятно? Если ты знаешь где их много и не можешь определиться какой из них мне нужен, подскажи пожалуйста ссылки на все, я сам выберу, а не знаешь не лезь. Мне эти нравоучения даром не нужны, и не надо себя пиарить своими ассоциациями.

    Всех знающих людей отпугиваете своими выпадами. Думайте что говорите.
     
  20. volodya

    volodya wasm.ru

    Публикаций:
    0
    Регистрация:
    22 апр 2003
    Сообщения:
    1.169
    OtD



    Так, мне это надоело. На протяжении всего времени этого топа я вижу только как ты пинаешь ВСЕХ. Так вот, мне это надоело. Тема закрыта.
     
Статус темы:
Закрыта.