Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.03.18;
Скачать: CL | DM;

Вниз

разделить char на 2 байта   Найти похожие ветки 

 
Gu   (2011-12-06 17:27) [0]

delphi xe.
type c:char, где ord(c)=0..65535;

нет ли каких процедур, которые бы делали это

procedure Char2Bytes(c:char;var x,x1:byte);
и обратная
procedure Bytes2Char(x,x1:byte;var c:char);

и если нет, то как это лучше сделать (перевести char в двухбайтовое представление и обратно)?


 
депутатъ   (2011-12-06 17:29) [1]

x1 := Ord(c) mod 256; x2 := Ord(c) div 256;

c := Chr(x1 + 256 * x2);


 
Ega23 ©   (2011-12-06 17:32) [2]

А зачем?
Есть Char, есть AnsiChar. Неужели недостаточно???


 
Gu   (2011-12-06 17:34) [3]


> депутатъ   (06.12.11 17:29) [1]

спасибо. встроеного (готовых процедур) я так понимаю ничего нет?


 
Anatoly Podgoretsky ©   (2011-12-06 17:36) [4]

> Gu  (06.12.2011 17:27:00)  [0]

WordRec


 
Gu   (2011-12-06 17:43) [5]


> А зачем?

почему тут многие хотят это знать, а не просто ответить на вопрос? только на этом форуме такие вопросы задают, сколько уже пишу = задал вопрос - получил ответ и только тут сначала спрашивают "зачем" :)

зачем: надо записать строку юникода (+ и отдельные символы) побайтово в стреам, а потом прочитать их. что то изменится если вы это узнали или повлияло бы на ответ [1]?


 
Gu   (2011-12-06 17:44) [6]


> Anatoly Podgoretsky ©   (06.12.11 17:36) [4]

во! спасибо, жаль обратной нет


 
Dennis I. Komarov ©   (2011-12-06 17:45) [7]


> почему тут многие хотят это знать, а не просто ответить
> на вопрос? только на этом форуме такие вопросы задают, сколько
> уже пишу = задал вопрос - получил ответ и только тут сначала
> спрашивают "зачем" :)
>

Про X,Y,Z читал?


 
Dimka Maslov ©   (2011-12-06 17:45) [8]


> встроеного


побитные операции AND, OR, XOR и операции сдвига SHR и SHL и есть встроенные функции для подобных вещей. Их никто не запрещал.

расположение переменной по абсолютному адресу

указатели на массивы и записи

вариантные записи

тоже есть встроенные функции для подобных вещей. Их никто не запрещал.

И вообще нормальные языки программирования задают лишь базовый функционал, всё остальное - а совести программиста. Делать "стандартную встроенную" функцию на всё и вся никто не будет.


 
Dimka Maslov ©   (2011-12-06 17:49) [9]


> надо записать строку юникода (+ и отдельные символы) побайтово
> в стреам


А что мешает записать строку юникода целиком в стреам а потом прочитать? Или что мешает сделать это посимвольно?


 
Anatoly Podgoretsky ©   (2011-12-06 17:55) [10]

> Gu  (06.12.2011 17:44:06)  [6]

Как это нет, ты что не программист?


 
Gu   (2011-12-06 18:00) [11]


> А что мешает записать строку юникода целиком в стреам

мешает структура файла

> Как это нет, ты что не программист?

:) скорее любитель, так, типа хобби. както хочется юзать стандартные готовые вещи а не изобретать велосипед, хотябы в общих чертах об оптимизации думать.
я попозже покажу прогу, где это применяется


 
Dimka Maslov ©   (2011-12-06 18:03) [12]


> мешает структура файла


Структуре файла всё равно. Если это нормальная структура.


 
Плохиш ©   (2011-12-06 19:10) [13]


> Anatoly Podgoretsky ©   (06.12.11 17:55) [10]

Судя по его ответу он тебя не понял :-)


 
Anatoly Podgoretsky ©   (2011-12-06 20:19) [14]

> Плохиш  (06.12.2011 19:10:13)  [13]

Наверно.


 
Ega23 ©   (2011-12-06 21:50) [15]


> зачем: надо записать строку юникода (+ и отдельные символы)
> побайтово в стреам, а потом прочитать их. что то изменится
> если вы это узнали или повлияло бы на ответ [1]?


Естественно.


procedure TForm12.Button2Click(Sender: TObject);
var
 s: string;
 ms: TMemoryStream;
 i: Integer;
begin
 ms := TMemoryStream.Create;
 try
   s := Edit1.Text;
   i := Length(s);
   ms.WriteBuffer(i, SizeOf(Integer));
   ms.WriteBuffer(PChar(s)^, i *SizeOf(Char));

   s := "";
   ms.Position := 0;
   i := 0;

   ms.ReadBuffer(i, SizeOf(Integer));
   SetLength(s, i);
   ms.ReadBuffer(PChar(s)^, i *SizeOf(Char));

   Label1.Caption := s;

 finally
   ms.Free;
 end;
end;


Ну а сагу об x, y, z - заучить наизусть.
http://www.gunsmoker.ru/2008/10/x-y-z.html


 
DVM ©   (2011-12-06 22:17) [16]


> надо записать строку юникода (+ и отдельные символы)
> > побайтово в стреам, а потом прочитать их.

Ну связываться с отдельными байтами при записи текста в поток я вижу смысл только если структура файла явно подразумевает BigEndian или LittleEndian порядок байт. Да и то, на этот случай есть TEncoding.Unicode.BigEndianUnicode


 
Gu   (2011-12-06 22:50) [17]

прога
http://www.multiupload.com/C3V3FPBZTN


 
Gu   (2011-12-06 22:50) [18]

скрины
http://i28.fastpic.ru/big/2011/1206/06/a38c824f716186a5179376a0cbb92606.png
http://i31.fastpic.ru/big/2011/1206/03/f8df0373fffd605d3a655e27ba9d0403.png


 
Gu   (2011-12-06 22:52) [19]

большой кусок текста форум "скушал" при отправке, по новой набирать не хочу. кто хочет может потестить.


 
Ega23 ©   (2011-12-06 23:01) [20]


> кто хочет может потестить.


Вот эта... Маленькая мятежница.avi  - это прон? Если прон, то я бы потестил...


 
Gu   (2011-12-06 23:07) [21]


>  - это прон?

это класика, такие фильмы надо знать :)
http://rutracker.org/forum/viewtopic.php?t=1192498


 
Ega23 ©   (2011-12-06 23:08) [22]


> это класика, такие фильмы надо знать :)


ЦП, походу. Сами садитесь...


 
Anatoly Podgoretsky ©   (2011-12-07 10:36) [23]

Поменять местами байты, что ли?



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

Текущий архив: 2012.03.18;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.009 c
2-1322683472
Никита1990
2011-12-01 00:04
2012.03.18
Как определить дату БИОС?


15-1313642062
runer
2011-08-18 08:34
2012.03.18
Как расшарить принтер в WIN7?


15-1322034106
vuk
2011-11-23 11:41
2012.03.18
Проверяем цветовое восприятие


15-1322326868
boriskb
2011-11-26 21:01
2012.03.18
Вакансии


2-1323067819
мамон
2011-12-05 10:50
2012.03.18
Как программно нажать на кнопки в WebBrowser"