![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
разделить char на 2 байта
Gu © (2011-12-06 17:27:00)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 в двухбайтовое представление и обратно)?
Anatoly Podgoretsky (2011-12-07 10:36:00) [1]Поменять местами байты, что ли?
Ega23 (2011-12-06 23:08:00) [2]
> это класика, такие фильмы надо знать :)
ЦП, походу. Сами садитесь...
Gu (2011-12-06 23:07:00) [3]
> - это прон?
это класика, такие фильмы надо знать :)
http://rutracker.org/forum/viewtopic.php?t=1192498
Ega23 (2011-12-06 23:01:00) [4]
> кто хочет может потестить.
Вот эта... Маленькая мятежница.avi - это прон? Если прон, то я бы потестил...
Gu (2011-12-06 22:52:00) [5]большой кусок текста форум "скушал" при отправке, по новой набирать не хочу. кто хочет может потестить.
Gu (2011-12-06 22:50:00) [6]скрины
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:50:00) [7]прога
http://www.multiupload.com/C3V3FPBZTN
DVM (2011-12-06 22:17:00) [8]
> надо записать строку юникода (+ и отдельные символы)
> > побайтово в стреам, а потом прочитать их.
Ну связываться с отдельными байтами при записи текста в поток я вижу смысл только если структура файла явно подразумевает BigEndian или LittleEndian порядок байт. Да и то, на этот случай есть TEncoding.Unicode.BigEndianUnicode
Ega23 (2011-12-06 21:50:00) [9]
> зачем: надо записать строку юникода (+ и отдельные символы)
> побайтово в стреам, а потом прочитать их. что то изменится
> если вы это узнали или повлияло бы на ответ [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
Anatoly Podgoretsky (2011-12-06 20:19:00) [10]> Плохиш (06.12.2011 19:10:13) [13]
Наверно.
Плохиш (2011-12-06 19:10:00) [11]
> Anatoly Podgoretsky © (06.12.11 17:55) [10]
Судя по его ответу он тебя не понял :-)
Dimka Maslov (2011-12-06 18:03:00) [12]
> мешает структура файла
Структуре файла всё равно. Если это нормальная структура.
Gu (2011-12-06 18:00:00) [13]
> А что мешает записать строку юникода целиком в стреам
мешает структура файла
> Как это нет, ты что не программист?
:) скорее любитель, так, типа хобби. както хочется юзать стандартные готовые вещи а не изобретать велосипед, хотябы в общих чертах об оптимизации думать.
я попозже покажу прогу, где это применяется
Anatoly Podgoretsky (2011-12-06 17:55:00) [14]> Gu (06.12.2011 17:44:06) [6]
Как это нет, ты что не программист?
Dimka Maslov (2011-12-06 17:49:00) [15]
> надо записать строку юникода (+ и отдельные символы) побайтово
> в стреам
А что мешает записать строку юникода целиком в стреам а потом прочитать? Или что мешает сделать это посимвольно?
Dimka Maslov (2011-12-06 17:45:00) [16]
> встроеного
побитные операции AND, OR, XOR и операции сдвига SHR и SHL и есть встроенные функции для подобных вещей. Их никто не запрещал.
расположение переменной по абсолютному адресу
указатели на массивы и записи
вариантные записи
тоже есть встроенные функции для подобных вещей. Их никто не запрещал.
И вообще нормальные языки программирования задают лишь базовый функционал, всё остальное - а совести программиста. Делать "стандартную встроенную" функцию на всё и вся никто не будет.
Dennis I. Komarov (2011-12-06 17:45:00) [17]
> почему тут многие хотят это знать, а не просто ответить
> на вопрос? только на этом форуме такие вопросы задают, сколько
> уже пишу = задал вопрос - получил ответ и только тут сначала
> спрашивают "зачем" :)
>
Про X,Y,Z читал?
Gu (2011-12-06 17:44:00) [18]
> Anatoly Podgoretsky © (06.12.11 17:36) [4]
во! спасибо, жаль обратной нет
Gu (2011-12-06 17:43:00) [19]
> А зачем?
почему тут многие хотят это знать, а не просто ответить на вопрос? только на этом форуме такие вопросы задают, сколько уже пишу = задал вопрос - получил ответ и только тут сначала спрашивают "зачем" :)
зачем: надо записать строку юникода (+ и отдельные символы) побайтово в стреам, а потом прочитать их. что то изменится если вы это узнали или повлияло бы на ответ [1]?
Anatoly Podgoretsky (2011-12-06 17:36:00) [20]> Gu (06.12.2011 17:27:00) [0]
WordRec