Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Синтаксис
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.10.2008, 23:28
avanes avanes вне форума
Прохожий
 
Регистрация: 14.10.2008
Сообщения: 9
Репутация: 10
Вопрос Строки

Подскажите пожалуйсто, нужно работать с очень длинными строками. Я использую Delphi 7, и переменные типа String не может содержать больше 10220 символов. Вроде длинна строки может достигать 2гб. В чём проблема?
Ответить с цитированием
  #2  
Старый 15.10.2008, 00:39
Аватар для Wipahacker
Wipahacker Wipahacker вне форума
Начинающий
 
Регистрация: 01.06.2007
Адрес: ДОНЕЦК
Сообщения: 112
Репутация: 10
Лампочка Строка

(Именно строка в 2гб?) так такого не бывает все ровно получиться многострочный текст, наверное, ты имеешь в виду текст объемом в 2гб?
Конкретней вопрос, что нужно сделать с текстом?
Ответить с цитированием
  #3  
Старый 15.10.2008, 00:43
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Теоретически, Ansi-строка действительно может быть до 2Гб. Практически этого добиться нереально, т.к. на весь процесс в винде выделяется 2Гб адресного пространства (не памяти, а именно адресного пространства). Работай с ней по частям.

А вот как работать по частям - зависит от конкретной задачи.
Ответить с цитированием
  #4  
Старый 15.10.2008, 17:38
avanes avanes вне форума
Прохожий
 
Регистрация: 14.10.2008
Сообщения: 9
Репутация: 10
По умолчанию

Я анализирую строку и разбиваю её на составляющие части, с которыми в дальней что то делаю. Работать по частям конечно можно, но для этого необходимо переписывать уже написанное. Чего не охото. Если бы строка помещалось хотя бы 50 000 символов мне бы этого хватило.
Ответить с цитированием
  #5  
Старый 15.10.2008, 20:16
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Вариант - переписать на PCHAR. Код придется менять минимум, но потребуется вначале вписать выделение памяти и загрузку и в конце - освобождение памяти.

А по хорошему - работать по кусочкам. Т.е. переписывать алгоритм в части получения данных для обработки.
Ответить с цитированием
  #6  
Старый 15.10.2008, 21:04
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

А если представить все это в виде массива символов?
Или еще того проще, запихнуть в поток (пусть даже в файловый), там он может быть до 4ГБ, да и навигация с чтением будет происходить быстрее и проще.
Но хозяин-барин.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
  #7  
Старый 15.10.2008, 21:32
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,020
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, PChar можно вполне рассматривать как массив символов
Все зависит от конкретной задачи, так что все советы пока абстрактные...
Ответить с цитированием
  #8  
Старый 16.10.2008, 00:23
avanes avanes вне форума
Прохожий
 
Регистрация: 14.10.2008
Сообщения: 9
Репутация: 10
По умолчанию

Спасибо всем за советы. Проблему решил при помщи файлов, использование данного варианта практически не потребовало изменения кода.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:41.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter