Как работать с большим обьемом строк.
От: DimaS-Page Ниоткуда http://www.DimaS-Page.Narod.ru
Дата: 04.02.04 07:49
Оценка:
Моя программа работает с большими обьемами строк.
Я использую TStringList, но таким макаром все работает медленно
и в него больше 64KB не запишешь. Как быстро манипулировать строками.
Например WinAmpУ практически не составляет труда сортировать или просто загрузить
плейлист на 2 тысячи файлов и осуществлять поиск по ним.
Re: Как работать с большим обьемом строк.
От: Callisto  
Дата: 04.02.04 07:56
Оценка: -2
Здравствуйте, DimaS-Page, Вы писали:

DP>Моя программа работает с большими обьемами строк.

DP>Я использую TStringList, но таким макаром все работает медленно
DP>и в него больше 64KB не запишешь. Как быстро манипулировать строками.
DP>Например WinAmpУ практически не составляет труда сортировать или просто загрузить
DP>плейлист на 2 тысячи файлов и осуществлять поиск по ним.

Для большого объема надо использовать динамическую память.
Выделять для строки память и использовать TList для хранения указателей на эти строки.
А самое лучшее написать свой класс или объект, который бы работал с такими строками.
Re: Как работать с большим обьемом строк.
От: Leonid Troyanovsky  
Дата: 04.02.04 08:07
Оценка:
Здравствуйте, DimaS-Page, Вы писали:

DP>Моя программа работает с большими обьемами строк.

DP>Я использую TStringList, но таким макаром все работает медленно
DP>и в него больше 64KB не запишешь. Как быстро манипулировать строками.

В TStringList можно записать сколько хочешь KB, хоть 65
TStringList очень быстро манипулирует строками, например, путем Sorted.

DP>Например WinAmpУ практически не составляет труда сортировать или просто загрузить

DP>плейлист на 2 тысячи файлов и осуществлять поиск по ним.

2K * ~260 = 520К.
Для TStringList не составляет труда сортировать, грузить и осуществлять поиск в оном.

Может быть имелся ввиду TListBox?
Тогда возьми вместо него, например, TStringGrid & OnDrawCell.
Строки же можно хранить в TStringList.
--
С уважением, LVT
Re: Как работать с большим обьемом строк.
От: Romkin  
Дата: 04.02.04 08:07
Оценка:
Здравствуйте, DimaS-Page, Вы писали:

DP>Моя программа работает с большими обьемами строк.

DP>Я использую TStringList, но таким макаром все работает медленно
DP>и в него больше 64KB не запишешь. Как быстро манипулировать строками.
DP>Например WinAmpУ практически не составляет труда сортировать или просто загрузить
DP>плейлист на 2 тысячи файлов и осуществлять поиск по ним.

TStringList нормально работает с большим количеством строк. Кто сказал, 64 Кб?! А то, что медленно — так сам смотри, сколько тебе надо времени на загрузку туда из файла, или просто на выделение памяти? И что значит манипулировать строками? Поиск? Отсортируй TStringList и будешь в нем быстро искать.
А в остальном обычно никто весь список не загружает, работают с частями
Re: Как работать с большим обьемом строк.
От: ArtDenis Россия  
Дата: 04.02.04 08:13
Оценка:
Здравствуйте, DimaS-Page, Вы писали:

DP>Моя программа работает с большими обьемами строк.

DP>Я использую TStringList, но таким макаром все работает медленно
Есть такое дело.

DP>и в него больше 64KB не запишешь.

С чего ты это взял?

IMHO: самый лучший для тебя вариант — это проецировать нужый файл в память, быстро пробежатся по файлу и запомнить начало каждой строчки. Затем, чтобы обратиться к нужной строчке, ты ищешь её адрес в массиве и обращаешься к нужно области памяти, в которую спроецирован файл.
... << RSDN@Home 1.1.2 stable >>
[ 🎯 Дартс-лига Уфы | 🌙 Программа для сложения астрофото ]
Re: Как работать с большим обьемом строк.
От: Sinclair Россия https://github.com/evilguest/
Дата: 04.02.04 08:46
Оценка:
Здравствуйте, DimaS-Page, Вы писали:

DP>Я использую TStringList, но таким макаром все работает медленно

DP>и в него больше 64KB не запишешь.
Это кто тебе сказал? Нету там никаких ограничений.
DP> Как быстро манипулировать строками.
DP>Например WinAmpУ практически не составляет труда сортировать или просто загрузить
DP>плейлист на 2 тысячи файлов и осуществлять поиск по ним.
В TStringList тоже.
... << RSDN@Home 1.1.3 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Как работать с большим обьемом строк.
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 04.02.04 09:09
Оценка:
Здравствуйте, DimaS-Page, Вы писали:

DP>Моя программа работает с большими обьемами строк.

Моя тоже:

procedure TMainForm.TestBtnClick(Sender: TObject);
var
  S: TStringList;
  St: string;
  I, J: Integer;
const
  STR_COUNT = 99999;
  STR_BASE_LEN = 20;
  STR_DELTA = 30;
begin
  S := TStringList.Create;
  try
    for I := 0 to STR_COUNT do
    begin
      SetLength(St, Random(STR_DELTA) + STR_BASE_LEN);
      for J := 1 to Length(St) do
        St[J] := Char(Byte('a') + Random(26));
    end;
    S.Sort;
    ShowMessage('List sorted');
  finally
    S.Free;
  end;
end;


DP>Я использую TStringList, но таким макаром все работает медленно

Может TListBox под Win95? В этом случае возьми лучше ListView и почитай про свойство OwnerData

DP>и в него больше 64KB не запишешь. Как быстро манипулировать строками.

Как же мне удалось записать&

DP>Например WinAmpУ практически не составляет труда сортировать или просто загрузить

DP>плейлист на 2 тысячи файлов и осуществлять поиск по ним.
Если Title составляет в среднем 30 символов, ты получишь чуть меньше 64 К
Re: Как работать с большим обьемом строк.
От: DimaS-Page Ниоткуда http://www.DimaS-Page.Narod.ru
Дата: 04.02.04 13:57
Оценка:
Как динамически с ними работать? Дайте пример пожалуйста.
Re[2]: Как работать с большим обьемом строк.
От: Sinclair Россия https://github.com/evilguest/
Дата: 04.02.04 14:13
Оценка:
Здравствуйте, DimaS-Page, Вы писали:

DP>Как динамически с ними работать? Дайте пример пожалуйста.

var
    SL: TStrings;
begin
    SL:= TStringList.Create;
    try
        SL.Add('One');
        SL.Add('Two'); 
        SL.Add('Three'); 
    finally
        SL.Free;
    end
end;
]
Чего еще? См. http://rsdn.ru/howtoask.htm
... << RSDN@Home 1.1.3 beta 2 >>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Как работать с большим обьемом строк.
От: Anatoly Podgoretsky Эстония http://www.podgoretsky.com
Дата: 04.02.04 16:00
Оценка:
DimaS-Page> Я использую TStringList, но таким макаром все работает медленно
и в него больше 64KB не запишешь.

В других сообщениях уже сказали, что нет такого ограничения. Лично я
загружал от 200 до 700 мб, такой объем конечно не быстро, до 20 секунд, а
вот размеры в несколько мб просто глазом не заметить.

--
Anatoly Podgoretsky
http://podgoretsky.com
Posted via RSDN NNTP Server 1.8 beta
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.