Главная страница
    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.52 MB
Время: 0.049 c
4-1095466580
Apl
2004-09-18 04:16
2004.10.24
Как отключить поддержку стиля Win XP в своей программе


1-1096497679
Defunct
2004-09-30 02:41
2004.10.24
Exception: Not enough storage is available to process this ..


4-1095770435
Falendysh
2004-09-21 16:40
2004.10.24
Окно теряет StayOnTop


14-1097150551
Lool
2004-10-07 16:02
2004.10.24
Еще одна задача


14-1096792176
gn
2004-10-03 12:29
2004.10.24
^-)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский