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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.09.2011, 18:12
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию Чтение книг

Хочу спросить насчет реализации следующего

Неизвестное число пользователей, отсылают запросы и им отправляются страницы книг которые они читают.
Но как быть, постоянно грузить книгу при каждом запросе и копировать нужный текст.

Или же если оставлять в TstringList то нам не известно сколько пользователей будет читать для каждого надо будет свой TstringList. Да и к тому же если оба одну книгу запросят надо както знать из какой переменной её взять, в общем получается куча гемороя, и кроме как через массивы вариантов не вижу, с вариантом постоянной загрузки проще, но медленней, война и мир к примеру в файле txt 3мб весит, и так каждый раз грузить.

Хотел бы услышать советы.
Ответить с цитированием
  #2  
Старый 18.09.2011, 20:29
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,097
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Организуй фабрику (есть прямо такой паттерн).
Когда у тебя приходит запрос страницы из книги, то ты обращаешься к фабрике, а уже она проверяет, есть ли в памяти такая книга и, если нет, то подгружает. Ну в номер страницы хранится в переменных сессии клиента. Т.е. данные буду в одном экземпляре.
Ответить с цитированием
  #3  
Старый 18.09.2011, 21:23
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

хм, ну это логично, а грузить куда? в массив TStringList? потом когда книгу прекратили читать нодо еще и очищать, а гдето вести запись какие массивы свободны
Ответить с цитированием
  #4  
Старый 18.09.2011, 22:08
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,097
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от ALexandr555
хм, ну это логично, а грузить куда? в массив TStringList? потом когда книгу прекратили читать нодо еще и очищать, а гдето вести запись какие массивы свободны

Грузить - в зависимости от формата. Надо смотреть по обстоятельствам.
По поводу очистки. Ну я бы подумал на счет ограничения по времени и кол-ву запросов. Например если к конкретной книге не обращаются в течении 10 минут и 100 запросов, то книгу выгружаем.

Можно еще грузить не всю книгу, а некоторый набор странриц под конкретного пользователя. Но тут уже зависит от формата, а котором хранится книга. Иной раз дешевле загрузить все.
Ответить с цитированием
  #5  
Старый 18.09.2011, 23:44
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

все абсолютно txt будет, насчет очистки у меня проблем нету, я больше клоню к тому что с массивами много гемороя
Ответить с цитированием
  #6  
Старый 18.09.2011, 23:56
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Это с каких пор массивы стали проблемными?
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 19.09.2011, 02:12
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

ну например изначалльно нужно както помечать занятые места в массиве, как только появляется клиент нужно найти ему свободныое место и загрузить книгу, потом освободить и пометить как не занятый, чтобы в последствии при надобности выделить другому, так же записывать в каком какая книга.
Ответить с цитированием
  #8  
Старый 19.09.2011, 02:32
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

И в чём проблема?
Код:
type
  TMyRec = record
    Busy : Boolean;
    Buf : ; // нужный тип
  end;

var
  MyRec : array of TMyRec;
дальше по-накатанному.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #9  
Старый 19.09.2011, 11:08
Аватар для ALexandr555
ALexandr555 ALexandr555 вне форума
Специалист
 
Регистрация: 09.10.2010
Адрес: Тольятти
Сообщения: 803
Версия Delphi: Delphi 7
Репутация: 2064
По умолчанию

А при поиске свободного пробегаться циклом?
Ответить с цитированием
  #10  
Старый 19.09.2011, 21:27
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Много время не займёт.
И это только набросок, поля можно организовать и по-другому, также ничто не мешает использовать структуру в связке с TList, тогда все прелести как Delete, Pack, IndexOf и т.д. станут доступны.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #11  
Старый 20.09.2011, 09:23
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

или можно на ассоциативный массив книг
http://ru.wikipedia.org/wiki/Ассоциа..._массив#Delphi

а если надо хранить число пользователей то:
AddObject(TMy.create)
Objects['voina i mir'].plusodin
type Tmy = class
private colvo: integer;
public plusodin; minusodin;

как-то так
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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