|
#1
|
|||
|
|||
Строки
Подскажите пожалуйсто, нужно работать с очень длинными строками. Я использую Delphi 7, и переменные типа String не может содержать больше 10220 символов. Вроде длинна строки может достигать 2гб. В чём проблема?
|
#2
|
||||
|
||||
Строка
(Именно строка в 2гб?) так такого не бывает все ровно получиться многострочный текст, наверное, ты имеешь в виду текст объемом в 2гб?
Конкретней вопрос, что нужно сделать с текстом? |
#3
|
|||
|
|||
Теоретически, Ansi-строка действительно может быть до 2Гб. Практически этого добиться нереально, т.к. на весь процесс в винде выделяется 2Гб адресного пространства (не памяти, а именно адресного пространства). Работай с ней по частям.
А вот как работать по частям - зависит от конкретной задачи. |
#4
|
|||
|
|||
Я анализирую строку и разбиваю её на составляющие части, с которыми в дальней что то делаю. Работать по частям конечно можно, но для этого необходимо переписывать уже написанное. Чего не охото. Если бы строка помещалось хотя бы 50 000 символов мне бы этого хватило.
|
#5
|
|||
|
|||
Вариант - переписать на PCHAR. Код придется менять минимум, но потребуется вначале вписать выделение памяти и загрузку и в конце - освобождение памяти.
А по хорошему - работать по кусочкам. Т.е. переписывать алгоритм в части получения данных для обработки. |
#6
|
||||
|
||||
А если представить все это в виде массива символов?
Или еще того проще, запихнуть в поток (пусть даже в файловый), там он может быть до 4ГБ, да и навигация с чтением будет происходить быстрее и проще. Но хозяин-барин. — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#7
|
|||
|
|||
Ну, PChar можно вполне рассматривать как массив символов
Все зависит от конкретной задачи, так что все советы пока абстрактные... |
#8
|
|||
|
|||
Спасибо всем за советы. Проблему решил при помщи файлов, использование данного варианта практически не потребовало изменения кода.
|