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

Вниз

строку в набор байт   Найти похожие ветки 

 
Skandinav   (2013-03-05 15:56) [0]

Есть строка, нужно перевести ее в набор байт и присвоить cardinal-переменной. Как присвоить не пойму. Подскажите, пожалуйста.


 
brother ©   (2013-03-05 16:07) [1]

пример строки?


 
Skandinav   (2013-03-05 16:08) [2]

строку в массив байт перевожу, а как присвоить массив переменной cardinal непойму никак


procedure TForm1.FormCreate(Sender: TObject);
var
 S: string;
 A: array [1..4] of Byte;
 I: Integer;
 C: Cardinal;
begin
 S := "ABCD";

 for I := 1 to Length(S) do
   A[I] := Ord(S[I]);

 //C := ???
end;


 
MBo ©   (2013-03-05 16:09) [3]

Строка и есть адрес набора байтов. Что именно сделать нужно - неясно.
Вот варианты для начала обсуждения:

var
 s: AnsiString;
 u: Cardinal;

 s :="abcdef";

 u := PCardinal(@s[1])^;

 Move(s[1], u, SizeOf(u);


 
icWasya ©   (2013-03-05 16:37) [4]

Как вариант

1)

var V:packed record
 case boolean of
   true:(A: array [1..4] of Byte;);
  false:(C: Cardinal;);
end;

for I := 1 to Length(S) do
  V.A[I] := Ord(S[I]);

Result:= V.C;


2)

var
 A: array [1..4] of Byte;
 C: Cardinal; absolute A;
end;

for I := 1 to Length(S) do
  A[I] := Ord(S[I]);

Result:= C;


 
Skandinav   (2013-03-05 17:12) [5]

задача такая:

в текстовом файле храняться строковое значение длиной 4 символа.

ABCD

в программе есть константа, которая представляет некоторее строковое значение, которое может быть в файле ввиде байт.

const
 ABCD = $65666768;

нужно считать строковое значение из файла и проверить совпадает ли оно с константой. Как сделать сравнение.

//S := GetStrFromFile;
//if ABCD = ???


 
MBo ©   (2013-03-05 17:18) [6]

Обрати внимание:
строка "ABCD" хранится в памяти как #$65 #$66 #$67 #$68
Cardinal число  $65666768 хранится в обратном порядке!  $68 #$67 #$66 #$65


 
Ega23 ©   (2013-03-05 18:05) [7]


> в текстовом файле храняться строковое значение длиной 4
> символа.

Также обрати внимание: текстовый файл может быть в разных кодировках: OEM, ANSI, UTF-8, UTF-16 и ты.ды (насчёт ты.ды - не уверен).


 
Inovet ©   (2013-03-05 18:17) [8]

> [7] Ega23 ©   (05.03.13 18:05)
> UTF-16 и ты.ды (насчёт ты.ды - не уверен).

UTF-16 little endian
UTF-16 big endian



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

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

Наверх




Память: 0.48 MB
Время: 0.008 c
2-1362410240
Дмитрий
2013-03-04 19:17
2013.12.22
Роли в FB 2.1


15-1373039110
^-k-^
2013-07-05 19:45
2013.12.22
ajax


15-1372913017
БарЛог
2013-07-04 08:43
2013.12.22
"Обернуть" консольное приложение своим


15-1372969802
Юрий
2013-07-05 00:30
2013.12.22
С днем рождения ! 5 июля 2013 пятница


15-1372449106
TUser
2013-06-28 23:51
2013.12.22
Мыльница