Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
Добрый день, коллеги! В комментариях датируется 1991!!! годом, КАРЛ!!! Мне тогда было 6 лет. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. Вызов Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Не понимаю как это же самое сделать на C#. Больше всего смущает как это все вливается в переменную struct: Код: plaintext 1. Совсем не врубаюсь как это повторить на C# ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2017, 16:07 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. равнозначно Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2017, 16:48 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
В чем ценность этого кода? Он стоит таких трудозатрат? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2017, 21:18 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
mayton, 5-10 минут? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2017, 21:33 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
Siemarglmayton, 5-10 минут? Я думаю что у нас с вами разные оценки качества кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2017, 22:40 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
maytonSiemarglmayton, 5-10 минут? Я думаю что у нас с вами разные оценки качества кода.я оценил переписывание ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2017, 22:42 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
Siemarglmaytonпропущено... Я думаю что у нас с вами разные оценки качества кода.я оценил переписывание Я бы сюда добавил переосмысление этого куска кода и покрытие тестами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2017, 22:44 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
vadipokНе понимаю как это же самое сделать на C#. Больше всего смущает как это все вливается в переменную struct: Код: plaintext 1. Совсем не врубаюсь как это повторить на C# Что за переменная struct.struct - ключевое слово, не может переменная иметь такое имя. А вливается, как вы говорите, у вас всё в stp, которая является структурой. Ничего удивительного там нет, вы передаете адрес начала участка памяти и некими значениями производите инициализацию по этому адресу и соседних с ним. Возьмите и перепишите на C#, что конкретно-то не понятно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.08.2017, 23:45 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВозьмите и перепишите на C#, что конкретно-то не понятно? Ну, как бы, C# не позволяет так вольно обращаться с памятью. Она защищена от погроммистов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2017, 00:12 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
vadipok, Исходник толст и нуден. По Холстеду difficulty ~ 1 час и 20 минут где-то. Это время на освоение и review. Кроме того в лихих 91-х кодеры были тоже лихие и не следовали конвенциям по именам. Отсюда и вырвиглазный VECTOR (типа константа блин) и подозрительный lf который издалека похож на if. Я-бы тебе предложил следующее. Поскольку исходник на "C" рабочий то его надо использовать как площадку для генерации тестовых сценариев. Необходимо набрать кучу бинарных файлов (штук 10-20) и обработать их всех через ica010. Зафикировать результат (return(li - l1)) и ее побочный эффект в виде изменения аргумента char *a. Далее. Мы имеем чоткие сценарии которые можно включать в Unit-тесты для C#. У тебя есть вход и выход для фунции. Я-бы также советовал не бездумно переписывать а рефакторить. Игры с указателями должны уйти. Вместо них - операции с массивами. Для того чтобы подавить diffuculty я-бы предложил убрать прямые файловые операции (fseek). И разбить ica010 на обертку Код: c# 1. и внутренний метод который будет работать с текстовым стримом (System.IO.StreamReader) Код: c# 1. Обе из них разделят difficulty на части и общая сложность функций упадет и станет чуть легче разбираться и суппортить. Модульные тесты также удобно гонять по внутреннему методу. И сделать интерфейс отвязным от файловых имет и путей и прочее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2017, 00:27 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
SashaMercuryvadipokНе понимаю как это же самое сделать на C#. Больше всего смущает как это все вливается в переменную struct: Код: plaintext 1. Совсем не врубаюсь как это повторить на C# Что за переменная struct.struct - ключевое слово, не может переменная иметь такое имя. А вливается, как вы говорите, у вас всё в stp, которая является структурой. Ничего удивительного там нет, вы передаете адрес начала участка памяти и некими значениями производите инициализацию по этому адресу и соседних с ним. Возьмите и перепишите на C#, что конкретно-то не понятно? Конкретно не понятно как работает getc. Мы ему не передаем какие символы от куда до куда считать нужно. А он получается берет корректные данные разной длины и заполняет ими struct. Есть аналог данной функции на C#? Хотя mayton вроде все разжевал уже что делать. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2017, 08:17 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
vadipokКонкретно не понятно как работает getc. Это считывание одного байта из файла. В C# аналог FileStream.ReadByte() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2017, 08:26 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
Думаю тебе не помешает поизучать что такое указатели в С/С++. В C# это тоже может пригодится, их там можно использовать в unsafe коде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2017, 08:28 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
Еще один вопрос, коллеги. Как сделать индексный доступ к переменной struct? Гугление не помогает. А то в одну и ту же функцию isa010 могут передаваться разного формата struct. Желательно этот момент сделать наиболее гибким. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2017, 11:53 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
vadipokЕще один вопрос, коллеги. Как сделать индексный доступ к переменной struct? Гугление не помогает. А то в одну и ту же функцию isa010 могут передаваться разного формата struct. Желательно этот момент сделать наиболее гибким. Спасибо. Если речь об этом Код: plaintext 1. 2. то никак. Только сериализация в массив byte[] и обратно. В isa010 передавать byte[]. А лучше сделать все структуры классами унаследованными от какого-то базового и ica010() поправить так чтобы на вход принимал базовый класс и его заполнял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2017, 12:07 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
Dima TvadipokЕще один вопрос, коллеги. Как сделать индексный доступ к переменной struct? Гугление не помогает. А то в одну и ту же функцию isa010 могут передаваться разного формата struct. Желательно этот момент сделать наиболее гибким. Спасибо. Если речь об этом Код: plaintext 1. 2. то никак. Только сериализация в массив byte[] и обратно. В isa010 передавать byte[]. А лучше сделать все структуры классами унаследованными от какого-то базового и ica010() поправить так чтобы на вход принимал базовый класс и его заполнял.нельзя. в оригинале сериализация без элайна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2017, 12:12 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
Dima TvadipokЕще один вопрос, коллеги. Как сделать индексный доступ к переменной struct? Гугление не помогает. А то в одну и ту же функцию isa010 могут передаваться разного формата struct. Желательно этот момент сделать наиболее гибким. Спасибо. Если речь об этом Код: plaintext 1. 2. то никак. Только сериализация в массив byte[] и обратно. В isa010 передавать byte[]. А лучше сделать все структуры классами унаследованными от какого-то базового и ica010() поправить так чтобы на вход принимал базовый класс и его заполнял. Речь об этом Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2017, 12:53 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
Dima TОб этом я уже ответил 20711429 20712493 В C++ понятно все, спасибо. Мне бы это же сделать на С#. При команде Код: c# 1. возникает ошибка: не удается применить индексирование через [] к выражению типа "Programma.pasat0". Лучше наверно об это в форуме C# спросить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2017, 13:24 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
Я тебе уже написал что так не получится 20713095 stp должно иметь тип byte[], для этого тебе надо написать свой сериализатор Programma.pasat0 в byte[] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2017, 13:32 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
Какая однако *фигура*, байтовый доступ в С#..... Слегка почерканный пример из MSDN Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2017, 14:48 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
Капец как у ms фигурные скобки пишут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.08.2017, 19:58 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
Dima TЯ тебе уже написал что так не получится 20713095 stp должно иметь тип byte[], для этого тебе надо написать свой сериализатор Programma.pasat0 в byte[] Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. Вот так заработала, но одно большое НО: Работает, когда в struct нет параметра Код: c# 1. . Как только его добавляю начинаются ошибки. Интуитивно понимаю, что скорее всего программа не может определить размер, т. к. задана динамически. Как его обойти без использования [FieldOffset(18)]? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2017, 08:56 |
|
||
|
Переписываю древний код на C#.
|
|||
|---|---|---|---|
|
#18+
Не забывай также что разрядность char может быть больше чем byte. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.08.2017, 09:01 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39503051&tid=2018103]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
162ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 290ms |
| total: | 560ms |

| 0 / 0 |
