Текущий архив: 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.047 c