Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.24;
Скачать: CL | DM;

Вниз

List   Найти похожие ветки 

 
Klopan ©   (2004-10-06 16:45) [0]

приведите пожалуйста код класса TList, где каждый item - TRange.

type
Trange = record
 s1: string;
 s2: string;
 zax: integer;
end;

// т.е список типа trange.

Спасиба.


 
Amoeba ©   (2004-10-06 16:47) [1]

Что, трудно самому написать наследника TList перекрыв методы доступа к элементам списка? Работы, от силы, на полчаса.


 
Skier ©   (2004-10-06 16:48) [2]

TRange = record
s1: string;
s2: string;
zax: integer;
end;
PRange = ^TRange;
Остальное сам...Это не сложно...


 
Defunct ©   (2004-10-06 16:49) [3]

;>
5 баллов.


 
Erik1 ©   (2004-10-06 16:53) [4]

Только лучше заменить String на ShortString если возможно. А то будут указатели на указатели, а это некрасиво. Еще попробуй сделать: New(PRange); List.Add(PRange) небывай что перед delete нужет еше Dispose(PRange).


 
Skier ©   (2004-10-06 16:58) [5]


> Только лучше заменить String на ShortString если возможно

Не лучше !


 
Klopan ©   (2004-10-06 16:58) [6]

> Что, трудно самому написать наследника...

да, этого еще неразу неделал.

нужен простой список, где будет использоваться только Add и Items[index].


 
Ega23 ©   (2004-10-06 17:02) [7]

И ты думаешь, что сейчас умные люди за тебя задание по программизму делать будут?
Шевели извилиной, студент!


 
Суслик ©   (2004-10-06 17:09) [8]


> Только лучше заменить String на ShortString если возможно

КОгда лучше, когда хуже. Часто второе...
Так что не стал бы я это уж так однозначно советовать.
Ты же задачу не занаешь?


 
begin...end ©   (2004-10-06 17:23) [9]


> [6] Klopan ©   (06.10.04 16:58)


> нужен простой список, где будет использоваться только Add и Items[index]

Тогда я вообще не вижу смысла класс писать. Это просто обёртка массива будет, что ли? Может, проще массивом и пользоваться (динамическим)? И написать процедуру добавления элемента в него?


 
Klopan ©   (2004-10-06 17:59) [10]

begin...end © [9]

ммм... может быть...
попробую тогда.
спасиба.


 
begin...end ©   (2004-10-06 19:58) [11]

<OFFTOP>

> Klopan

Слушай, у тебя правда 31 декабря День Рождения? ;-)
</OFFTOP>


 
jack128 ©   (2004-10-06 20:16) [12]

Суслик ©   (06.10.04 17:09) [8]
КОгда лучше, когда хуже. Часто второе...

А когда первое лудше???


 
panov ©   (2004-10-06 20:18) [13]

>jack128 ©   (06.10.04 20:16) [12]

А когда первое лудше??

Когда нужны короткие строки-)


 
jack128 ©   (2004-10-06 20:25) [14]

panov ©   (06.10.04 20:18) [13]
:-)  Это конечно понятно, но я не очень себе представляю, где нужны короткие строки -)


 
pasha_golub ©   (2004-10-06 20:56) [15]

jack128 ©   (06.10.04 20:25) [14]
ФИО - короткая строка. :)


 
Defunct ©   (2004-10-06 20:58) [16]

> Это конечно понятно, но я не очень себе представляю, где нужны короткие строки -)

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


 
jack128 ©   (2004-10-06 22:16) [17]

Defunct ©   (06.10.04 20:58) [16]
бесполезное увеличение траффика и перерасход дискового пространства соответственно(не говоря уж о не эффективном использовании памяти)


 
Palladin ©   (2004-10-06 22:23) [18]

Использовать короткие строки это
1 ограничение на размер хранимой строки
2 излишняя трата памяти

это оправданно лишь в том случае если все строки одной длинны...


 
Defunct ©   (2004-10-07 00:28) [19]

jack128 ©   (06.10.04 22:16) [17]
Бред, вот пожалуйста тебе пример применения коротких строк, раз уж фантазии не хватает:


TCProtocol = packed record
 APacketType : String[4];
 AChannel    : String[16];
 AFrameID    : Cardinal;
 AFrameSize  : Word;
 ..
 ..
End;

GetMem(Frame, SizeOf(TCProtocol) + DataLength);
With TCProtocol(Frame) Do
Begin
  APacketType := "halo";
  AChannel    := "Broadcast";
  ...
  ...
  CopyMem( FrameData, Data, DataLength );
End;

UDPServer.SendData( Frame, ... );

FreeMem(Frame, DataLength);


 
jack128 ©   (2004-10-07 00:36) [20]

Defunct ©   (07.10.04 0:28) [19]
With PCProtocol(Frame) Do
я правельно понял??


> AChannel    := "Broadcast";
пересылка лишних 7 байт. Нафиг? (если это не особенности протокола обмена, конечно)


 
Defunct ©   (2004-10-07 00:40) [21]

[19] относилось к бесполезному перерасходу трафика.

> и перерасход дискового пространства соответственно

А это демострирует и неоправданный перерасход дискового пространства:

THexFileHeader = packed Record
 ATitle : String[27];        
 ACreationDate : String[20];
 AComment  : String[50];
 AProcInfo : String[10];
 ...
 ...
 ItemsCount : Cardinal;
 CheckSum   : Cardinal;
End;

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


 
Defunct ©   (2004-10-07 00:41) [22]

> пересылка лишних 7 байт. Нафиг? (если это не особенности протокола обмена, конечно)

Чтобы была четкая однозначность позиции следующей записи


 
Defunct ©   (2004-10-07 00:45) [23]

> With PCProtocol(Frame) Do я правельно понял??

Ну можно и так, но вообще-то предполагалось:

With TCProtocol(Frame^) Do


 
Palladin ©   (2004-10-07 00:51) [24]

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


 
Defunct ©   (2004-10-07 01:12) [25]

Palladin ©   (07.10.04 00:51) [24]

В контексте сабжа я согласен, что нужно использовать String.
Мои постинги просто показывают практическое применение коротких строк, и отвечают на это:

> Это конечно понятно, но я не очень себе представляю, где нужны короткие строки -)


 
jack128 ©   (2004-10-07 01:16) [26]

Defunct ©   (07.10.04 0:41) [22]
Чтобы была четкая однозначность позиции следующей записи

Defunct ©   (07.10.04 0:40) [21]
или никогда не писали мультисерверные приложения

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

Defunct ©   (07.10.04 1:12) [25]
Мои постинги просто показывают практическое применение коротких строк, и отвечают на это:

> Это конечно понятно, но я не очень себе представляю, где нужны короткие строки -)
они не НУЖНЫ. Их можно использовать, а можно и не использовать.


 
Defunct ©   (2004-10-07 02:15) [27]

> А как влияет мой опыт или отсутствие оного в написании таких приложений применительно с обсуждаемому вопросу

Вы бы высказались более мягко.
не так:
"Это конечно понятно, но я не очень себе представляю, где нужны короткие строки -)"
а хотя бы так:
в данном конкретном случае лучше не использовать короткие строки, которые полностью хранятся в записи. Лучше использовать большие строки, т.к. большие строки будут храниться в записи в виде указателей и соответственно запись будет занимать меньше места.

> они не НУЖНЫ. Их можно использовать, а можно и не использовать.
Это тоже слишком категоричное утверждение. Есть масса задач, которые решаются с помощью маленьких строк гораздо проще чем с помощью больших, а есть задачи в которых большие строки вообще неприменимы (DLL без ShareMem, сетевые протоколы с именами каналов и т.п.)


 
Суслик ©   (2004-10-07 09:18) [28]

Какой же разговор идет из-за моего в общем-то логичного утверждения, что есть моменты, когда короткие строки лучше? :))) Вот panov все верно понял :))

Неужто сложно придумать? НАпример московский телефон - 7 знаков. Только давайте не будем, говорить, что скоров Москве сменится номерная система и мой пример плохой. Все же это пример.

ЗЫ. Мое имхо: нужно использовать то, что нужно в данной ситуации. Область применимости длинный строк больше (о чем я и сказал). Но нельзя не признать, что и у коротких строк она есть (правда, я ими не пользуюсь - задачи такие :)).


 
Erik1 ©   (2004-10-07 11:47) [29]

Ну равели тему. А вобшето посоветовал это автору вопроса, чтобы прерация Move для него кончилась без последствий. И новых вопросов в форум невозникло. К тому же ShortString и String[x] это разные вещи.


 
VMcL ©   (2004-10-07 12:18) [30]

>>Erik1 ©  (07.10.04 11:47) [29]

>К тому же ShortString и String[x] это разные вещи.

Отличаеются только размером (SizeOf) при условии, что x <> 255.



Страницы: 1 вся ветка

Текущий архив: 2004.10.24;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.023 c
1-1097432917
GuAV
2004-10-10 22:28
2004.10.24
Как в Excel (позднее связывание) написать формат времени ?


3-1095744487
Fishka
2004-09-21 09:28
2004.10.24
Level DBF-файлов 5 и 7 - какое это имеет значение?


14-1096662951
Мазут Береговой
2004-10-02 00:35
2004.10.24
Вот интересная штука Панда антивирус:


14-1096793958
ceval
2004-10-03 12:59
2004.10.24
Подскажите какую-нибудь программу для организации почты п


3-1096273990
msguns
2004-09-27 12:33
2004.10.24
Параметры в TADOQuery