Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.07;
Скачать: [xml.tar.bz2];

Вниз

Object Pascal and Delphi   Найти похожие ветки 

 
turusov   (2002-09-25 15:24) [0]

Есть множество:
m = ["-","+","0".."9"] или
m = ["-","+","1","0","2".."9"]
Watch List выводит:
m: ["-","+","0".."9"]
Как получить значение в string как в Watch List


 
qube   (2002-09-25 15:40) [1]

Представление в памяти множеств
["-","+","1","0","2".."9"] и ["-","+","0".."9"] одинаково, поэтому надо просто написать процедуру вывода элементов множества.


 
Kaban   (2002-09-25 15:49) [2]

qube © (25.09.02 15:40)
сильно

человек, по-видимому, и интересуется как это сделать


 
MBo   (2002-09-25 16:05) [3]

извратик ;)


procedure TForm1.Button1Click(Sender: TObject);
var
s: string;
m: set of char;
c: char;
flag: Boolean;
first: byte;
begin
s := "[";
flag := false;
m := ["-", "+", "1", "0", "2".."9"];
for c := #0 to #255 do
begin
if c in m then
begin
if not flag then
s := s + ",""" + c + """";
flag := true;
end
else
begin
if flag then
if (Ord(c) - first) > 2 then
s := s + "..""" + Pred(c) + """";
flag := false;
first := Ord(c);
end;
end;
if (Length(s) >= 2) and (Pos(",", s) = 2) then
Delete(s, 2, 1);
s := s + "]";
caption := s;
end;


 
Старый паскалист   (2002-09-25 16:09) [4]

См исходники ф-и GetSetProp (TypInfo.pas).
Если её немного изменить, будет то, что тебе надо.


 
qube   (2002-09-25 16:10) [5]

По просьбам трудящихся:

type
TCharSet = set of char;

procedure PrintSet(s: TCharSet);
var
c: char;
state: (start, wait_first, wait_next, wait_last);
begin
state := start;
write("[");
for c := Chr(0) to Chr(255) do begin
case state of
start:
if c in s then begin
state := wait_next;
write(c);
end;

wait_first:
if c in s then begin
state := wait_next;
write(", ",c);
end;

wait_next:
if c in s then
state := wait_last
else
state := wait_first;

wait_last:
if not (c in s) then begin
state := wait_first;
write("..",chr(ord(c)-1));
end;
end;
end;
writeln("]");
end;


 
qube   (2002-09-25 16:13) [6]

Ого, сколько насочиняли, пока я трудился!
Да, одним извратом больше :).


 
turusov   (2002-09-26 08:32) [7]

Ребята не понимайте вопрос, буквально. Множество может быть любого типа. А насчет TypInfo, подскажите по конкретнее, на что обратить внимание.


 
turusov   (2002-09-26 08:37) [8]

Благодарю Старый паскалист!!!


 
MBo   (2002-09-26 08:39) [9]

Сказали же, на GetSetProp.
В моем и qube вариантах добавлен вывод "2".."9" именно в таком виде, без перечисления каждого элемента отдельно.


 
Anatoly Podgoretsky   (2002-09-26 09:10) [10]

MBo © (26.09.02 08:39)
Алгоритм можно упростить, если сделать вначале еде один доепольнилетьный обратный цикл для поиска максимального элемента во множестве.


 
Памяти   (2002-09-27 03:33) [11]

Купа-Купыча Гениального (см. "республика ШКИД").
До сих пор, Анатолий, критерием для меня служила надпись в ст.газете Купа-Купыча - "Юлыстрация к трогедии Борис Гадунв"!
Но Вы превзошли сей рекорд всего лишь в одном слове - "доепольнилетьный"!



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

Форум: "Основная";
Текущий архив: 2002.10.07;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
8-21156
sergn
2002-06-07 19:00
2002.10.07
Конвертация bitmap в wfm c прозрачным фоном


14-21251
Soft
2002-09-12 10:26
2002.10.07
FTP в инете нашару


14-21218
France
2002-09-09 11:53
2002.10.07
Хочу рестарт сделать, но...


3-20880
First_May
2002-09-16 13:57
2002.10.07
Oracle


1-21130
начинающий програмер
2002-09-25 20:16
2002.10.07
DLL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский