|
Оценить код
|
|||
---|---|---|---|
#18+
Жентельмены, делаю первые попытки мигрировать с Delphi на C#. Как раз подвернулась задача пропатчить бинарник. Накидал код, вроде работает. Логические косяки пока не искал, хочу другого. Копчиком чувствую, что из кода торчат уши паскаля, поэтому хотелось бы увидеть нечто более "правильное". Если не трудно, конечно. Отлов исключений пока не требуется. Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2016, 18:21 |
|
Оценить код
|
|||
---|---|---|---|
#18+
C#_nub, Жалко что тут форум не по C# ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2016, 18:45 |
|
Оценить код
|
|||
---|---|---|---|
#18+
Anatoly Moskovsky, а он вообще есть на sql.ru? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2016, 18:47 |
|
Оценить код
|
|||
---|---|---|---|
#18+
Есть форум Слабо понял о чем код (ты бы хоть камменты вставил или вкратце описал что делаешь). из лишнего особо ничего не заметил, разве что можно писать Код: c# 1.
Модератор: Тема перенесена из форума "C++". ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2016, 19:13 |
|
Оценить код
|
|||
---|---|---|---|
#18+
C#_nub, Код похож на рабочий, в остальном полная хрень. Дело далеко не в языке. 1. сравниваеш char и byte 2. читать побайтно это уже наказуемо. 3. Текст может иметь многобайтовые последовательности. Такая замена убьёт определенней текст. 4. Хороший код раза в два компактней и в 50 эффективней. 5. Правильный код должен с кодировками работать. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2016, 22:16 |
|
Оценить код
|
|||
---|---|---|---|
#18+
C#_nub, Код: c# 1.
https://msdn.microsoft.com/ru-ru/library/yh598w02.aspx Код: c# 1.
Венгерская нотация мертва Код: c# 1. 2. 3.
http://stackoverflow.com/questions/3160907/how-can-make-my-file-reading-class-return-an-ienumerablebyte-object Код: c# 1.
Вкусовщина, но лучше так: Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 11:48 |
|
Оценить код
|
|||
---|---|---|---|
#18+
Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 14:58 |
|
Оценить код
|
|||
---|---|---|---|
#18+
Denis. Код: c# 1.
C#_nubЛогические косяки пока не искал, хочу другого ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 15:02 |
|
Оценить код
|
|||
---|---|---|---|
#18+
если ничего не менять то так Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 15:46 |
|
Оценить код
|
|||
---|---|---|---|
#18+
Denis. Код: c# 1.
йад в аптеке ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 16:43 |
|
Оценить код
|
|||
---|---|---|---|
#18+
[quot zz118]Denis. Код: c# 1.
И бинарник "заведётся" после этого? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 17:40 |
|
Оценить код
|
|||
---|---|---|---|
#18+
mikronC#_nub, 1. сравниваеш char и byte 2. читать побайтно это уже наказуемо. 3. Текст может иметь многобайтовые последовательности. Такая замена убьёт определенней текст. 4. Хороший код раза в два компактней и в 50 эффективней. 5. Правильный код должен с кодировками работать. 1. Char & Byte еще курю, поэтому натыкал явное приведение типов. 2. Перестал боятся побайтного чтения в 94-м году, когда затолкнул в autoexec.bat smartdrv.exe. И вам пора избавиться от фобии. 3. По смыслу задачи унописуально какая будет кодировка входных параметров и исходного файла. 4. Сначала надо понять как это работает, и только потом использовать однострочные конструкции с вызовом десятка функций. 5. См. п. 3. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 17:55 |
|
Оценить код
|
|||
---|---|---|---|
#18+
ИзопропилDenis. Код: c# 1.
йад в аптеке сказал же учит. пусть знает. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 18:28 |
|
Оценить код
|
|||
---|---|---|---|
#18+
CS_nub1. Char & Byte еще курю, поэтому натыкал явное приведение типов. Важный момент. Char и Byte разные вещи. Вместо string используй массив Byte[] ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 18:58 |
|
Оценить код
|
|||
---|---|---|---|
#18+
CS_nubmikronC#_nub, 1. сравниваеш char и byte 2. читать побайтно это уже наказуемо. 3. Текст может иметь многобайтовые последовательности. Такая замена убьёт определенней текст. 4. Хороший код раза в два компактней и в 50 эффективней. 5. Правильный код должен с кодировками работать. 1. Char & Byte еще курю, поэтому натыкал явное приведение типов. 2. Перестал боятся побайтного чтения в 94-м году, когда затолкнул в autoexec.bat smartdrv.exe. И вам пора избавиться от фобии. 3. По смыслу задачи унописуально какая будет кодировка входных параметров и исходного файла. 4. Сначала надо понять как это работает, и только потом использовать однострочные конструкции с вызовом десятка функций. 5. См. п. 3. Ненадо тешить своё самолюбие. Ты спросил - ты получил. Ломаеш из себя не понятого(4) энтузиаста(2) олегофрена(3). Хочешь возразить - попробуй аргументировать не своим отношением к задаче а объективными критериями. 1. Почитай 2. Замерь скорость 3. "кодировка входных параметров" в твоём коде отсутсвует как сущность. "кодировка исходного файла" - Он у тебя один. По коду - текстовый. Ты утверждаеш, что результат всегда "правильный" вне зависимости от кодировки файла. Глупости. UTF8, многобайтобые последовательности, второй байт со значением твоего первого символа для поиска. 4. гениальный код, безусловно. Можно использовать как рвотное без побочных эффектов. Какие такие "однострочные конструкции"? Товарисч, вы о чём? ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 21:21 |
|
Оценить код
|
|||
---|---|---|---|
#18+
mikron, олигофрен здесь один - ты. Но мне не трудно, я повторю: "Как раз подвернулась задача пропатчить бинарник ". Отсюда следующее: в какой кодировке придут входные параметры, в такой они будут сравниваться с исходным файлом. Придут в юникоде, значит будет поиск и замена юникодной последовательности. string в приведенном исходнике был выбран для простоты. Далее тратить время на тебя не имею желания. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 22:38 |
|
Оценить код
|
|||
---|---|---|---|
#18+
Далее без взаимных оскорблений и перехода на личности, предупреждение обоим ... |
|||
:
Нравится:
Не нравится:
|
|||
30.03.2016, 23:06 |
|
Оценить код
|
|||
---|---|---|---|
#18+
я смотрю, тут уже вопрос исчерпан=) ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2016, 08:36 |
|
Оценить код
|
|||
---|---|---|---|
#18+
zz118, в принципе, да. сижу читаю доки по указанным всеми участниками ключевым моментам. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2016, 09:36 |
|
Оценить код
|
|||
---|---|---|---|
#18+
CS_nubmikron, олигофрен здесь один - ты. Но мне не трудно, я повторю: "Как раз подвернулась задача пропатчить бинарник ". Отсюда следующее: в какой кодировке придут входные параметры, в такой они будут сравниваться с исходным файлом. Придут в юникоде, значит будет поиск и замена юникодной последовательности. string в приведенном исходнике был выбран для простоты. Далее тратить время на тебя не имею желания. Ты не замечаешь разниц. Смотри по пунктам. - я не сказал что ты олигофрен, я сказал что ты его неубедительно изображаеш. Это не оскорбление. Ты же мне поставил диагноз. Бог с ним, меня не задевает, но почувсвуй разницу. - ты просил оценить код. Сейчас ссылаешся на задач которую ты решаешь. Код от этого не стал лутше. Если мне такое покажут и скажут что это работает один раз и потом в мусорку я это даже смотреть не буду. Потому что речь о экономичности решения и даже время на это тратить в пустую. Я это уже отметил фразой "код похоже рабочий" Реч о качестве кода, то это не аргумент. Код для мусорки. - ты не замечаеш разницу между кодировкой и юникодом. Это не одно и тоже. В юникоде тебе ничто не придёт. - не трать время на отговорки мне, трать на своё образование. - код громоздкий, не эфективный, безграмотный. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2016, 10:11 |
|
Оценить код
|
|||
---|---|---|---|
#18+
mikron, я вижу у тебя плохо с русским, поэтому я медленно писать буду. Ты в курсе как делают изменения в исполняемом файле? Берут байт и вместо него записывают другой: CF -> 45. В моем случае замен много и расположение (смещение) их меняется от версии к версии. Поэтому проще написать универсальный патчер, чем ковырять руками. Входные параметры в процедуру патча есть последовательность байт: <ObjectPascal> const Source, Dest: array of Byte; </ObjectPascal> C# я только начал пробовать, и до параметров не добрался, поэтому еще не знаю как правильно передать строку (любую: ansi, koi8-r, utf8, etc...) в функцию, как байтовую последовательность. Поэтому я не стал заморачиваться и использовал string. Для теста хватит за глаза. Теперь всё? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2016, 18:04 |
|
Оценить код
|
|||
---|---|---|---|
#18+
Код: c# 1.
это лучше в Код: c# 1.
обернуть ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2016, 19:35 |
|
Оценить код
|
|||
---|---|---|---|
#18+
Иммануил Кант, да, выше уже ткнули. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2016, 19:46 |
|
Оценить код
|
|||
---|---|---|---|
#18+
CS_nub Берут байт и вместо него записывают другой: CF -> 45. уже писал выше, используй массив байт Код: c# 1.
в C# используется юникод, поэтому Код: c# 1.
и Код: c# 1.
Работает одинаково, но по скорости отличаются в разы. Второе быстрее. PS mikron`а именно этим и запутал, он увидел в начале string, а дальше чукча писатель. Замени string на Byte[] и будет все смотреться гармонично. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2016, 19:55 |
|
Оценить код
|
|||
---|---|---|---|
#18+
CS_nubИммануил Кант, да, выше уже ткнули. Рихтера прочитай, чтобы не бегать по граблям. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.03.2016, 19:56 |
|
|
start [/forum/topic.php?fid=20&fpage=64&tid=1400687]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
181ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
others: | 280ms |
total: | 582ms |
0 / 0 |