ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
21 июля
35285 Топик полностью
FDA (12.07.2005 16:35, просмотров: 1) ответил AlexandrY на C# в среде VS.NET, но только не в DELPHI 2005.
C# штука интересная, но мне лично не нравится .NET из-за его ограничений! Вот к примеру как-то встала задача передачи через COM-порт данных типа float. Как её сделать на билдере? Очень просто: union { float f; char b [4]; } d; ... d.f = 0.123; ... for (int i = 0; i <= 3; i++) PutUART(d.b [i]); А на Delphi& Тоже несложно: d = record case Byte of 0 : (f : Single); 1 : (b : array [0..3] of Byte); end; ... d.f := 0.123; for i := 0 to 3 do PutUART(d.b [i]); А на C#? Такого прямого метода там нет! Поэтому приходится записывать float в память, а затем оттуда считывать побайтно! Бред! В свое время один наш программист сделал проще: F = f * 1000; PutUART(F >> 24); PutUART((F >> 16) & 0xFF); PutUART((F >> 8) & 0xFF); PutUART(F & 0xFF); Тут идёт округление до тысячных долей, то в той задаче этого было более чем достаточно!