Banzai Опубліковано 9 Липня, 2007 в 12:42 #1 Опубліковано 9 Липня, 2007 в 12:42 есть любопытная прога с сорсами на делфях ... возникло желание конвертонуть либо накрайняк реализовать идею на сишарпе под НЕТом ... застопорился на структуре packed record и ее описании в разделе имплементаций... выглядит ето чудо так - unit scan; Interface uses windows,classes; type pdescriptor=^descriptor; descriptor=packed record {file descriptor} next: pdescriptor; nf: integer; case integer of 0:(bytes: int64); 1:(nc: integer; sub: pdescriptor; mark: boolean; name: string[255]); end; tscanthread=class(tthread) d,no: integer; scanned,usedspace: int64; tree, recycled: pdescriptor; done: boolean; constructor create(drive: integer); procedure execute; override; procedure checkstate1; end; var norec: pdescriptor; implementation ,,,,, особенно интригует ето - pdescriptor=^descriptor; descriptor=packed record {file descriptor} next: pdescriptor; nf: integer; case integer of 0:(bytes: int64); 1:(nc: integer; sub: pdescriptor; mark: boolean; name: string[255]); end; -- насколько я понимаю pdescriptor - есть указатель на необъявленную переменную descriptor .... descriptor=packed record - не финализорована ЕНДом .... (фигурные скобки - ето коммент) case integer of - вообще мя выбил .... во первых интежер - етож базовый тип а не переменная ...???? - во вторых что собственно там будет выбираться??? - ведь в записи не обявлена такая переменная ... кроме всего сильно путают ети рекурсивные обращения и декларации .... в сумме в ету структуру должно записываться размер и имена каталогов и файлов при рекурсивном сканировании логического диска... если нуна запощу прогу и сорсы хелп ... я полагаю ето интересно для програмеров
imp13 Опубліковано 9 Липня, 2007 в 13:26 #2 Опубліковано 9 Липня, 2007 в 13:26 на сам "paked" можеш забити болт - це просто для економії пам'яті. а от з поперднім об'явленням типу в шарпі я не знаю що робити по причині незнайомства з шарпом.далі, логіка така: якщо в тебе pdescriptor.nf=0 то добавляється поле bytes, якщо 1 - то поля nc: integer; sub: pdescriptor; mark: boolean; name: string[255]. end закриває опис структури. такий case дозволяється робити в кінці опису структури і він має бути єдиний для даного опису.
Banzai Опубліковано 9 Липня, 2007 в 17:13 Автор #3 Опубліковано 9 Липня, 2007 в 17:13 ГРЭАТ СЭНКС! пойду думать как ето перевести на шарп ... синтаксис в нем весьма близок и паскалю и си но вот с описанием объектов и контролем типов в нем все намного строже... хм...однако хитро придумано...
ronya Опубліковано 13 Липня, 2007 в 20:40 #4 Опубліковано 13 Липня, 2007 в 20:40 RSDN.ru допоможеТам програмери тусуються!
McLaren Опубліковано 14 Липня, 2007 в 08:28 #5 Опубліковано 14 Липня, 2007 в 08:28 RSDN.ru допоможеТам програмери тусуються! щось в мене воно не відкривається, зроби лінком, плз.
sens Опубліковано 14 Липня, 2007 в 09:22 #6 Опубліковано 14 Липня, 2007 в 09:22 З RSDN якісь проблеми: про це пишуть тут.
Banzai Опубліковано 26 Липня, 2007 в 20:47 Автор #7 Опубліковано 26 Липня, 2007 в 20:47 на сам "paked" можеш забити болт - це просто для економії пам'яті. а от з поперднім об'явленням типу в шарпі я не знаю що робити по причині незнайомства з шарпом.далі, логіка така: якщо в тебе pdescriptor.nf=0 то добавляється поле bytes, якщо 1 - то поля nc: integer; sub: pdescriptor; mark: boolean; name: string[255]. end закриває опис структури. такий case дозволяється робити в кінці опису структури і він має бути єдиний для даного опису. хай ! еще вопросик... опиши плиз логику исполнения pdescriptor=^descriptor;descriptor=packed record x:pdescriptor;,,,endв плане того что есть ета запись и что есть pdescriptor? - как ето будет выглядеть в виде екземпляров структуры? короче плиз логику работы... ато я реально недогоняю... pdescriptor вроде как ето неинициализированная переменная типа descriptor да? или тоже тип? ... хм... нерублю в делфях - караул...
mix_forever Опубліковано 26 Липня, 2007 в 21:06 #8 Опубліковано 26 Липня, 2007 в 21:06 pdescriptor - указатель на переменную descriptor
Banzai Опубліковано 26 Липня, 2007 в 21:25 Автор #9 Опубліковано 26 Липня, 2007 в 21:25 хм ... тоесть что получается? - что прога работает с переменной-записью которая все одна ? и только рекурсивно дописывает в нее новые поля? микс! ты каданить щупал си шарп? - как ето перевести на него ? я голову сламал рекорды в делфях ето подобие класов и инициализацыей и екземплярами или нет?
mix_forever Опубліковано 26 Липня, 2007 в 22:24 #10 Опубліковано 26 Липня, 2007 в 22:24 Увы.. СиШарп-а в глаза не видел... Как то не возникало надобности...
Banzai Опубліковано 26 Липня, 2007 в 22:48 Автор #11 Опубліковано 26 Липня, 2007 в 22:48 ну не обязательно си шарп ... хотьбы си нетовый или простой...да хоть бы на словах - как ето работает? какая логика?
Banzai Опубліковано 27 Липня, 2007 в 12:10 Автор #12 Опубліковано 27 Липня, 2007 в 12:10 pdescriptor - указатель на переменную descriptor я запамятовал ... ето в разделе type ... ну ... указатель и ладно .. только под нэтом ето будет ансэйф код ... типа изза того что среда исполнения сама занимается сборкой мусора .. и может просто похерить область памяти в которой находится объект нашего указателя ... можно конечно выкрутится ... но дело не в етом .. мне кажется что я ужо нащупал смысл ... он гдета рядом собственно что хотим получить? - кучу либо стек, объектов либо записей-структур представляющих собой узлы (дескрипторы папок) и как часный случай листья - дескрипторы файлов ... беда в том что в шарпе нельзя структуру финализировать кэйзом или аналогом его ... - можно замутить две структуры с динамическим выбором правильной в процессе сканирования дерева каталогов ... не совсем понятно что есть переменные-указатели на дочерние субкаталоги ... вроде там поле то ксего одно а субкаталогов может быть немеряно.... ? сорсы - смотреть пост №1 хм... внимательно повтыкал на сорс и вроде понял в чем прикол ...
imp13 Опубліковано 27 Липня, 2007 в 14:27 #13 Опубліковано 27 Липня, 2007 в 14:27 typepdescriptor=^descriptor;descriptor=packed record varx:pdescriptor;воно десь так має бути...pdescriptor - тип вказівника на тип descriptor. тип вказівника може описуватись раніше, ніж тип на який вказує pdescriptor.
Рекомендовані повідомлення
Заархівовано
Ця тема знаходиться в архіві та закрита для подальших відповідей.