Hello,
I'm facing some trouble with raw field's in oracle. I made a simple test case with a raw field with 504 Bytes:
>>>>>>>>>
create table test (r4 RAW(504));
>
procedure TForm1.Button1Click(Sender: TObject);
var
koeff126: array[0..125] of Single;
I: Integer;
begin
for I := 0 to 126 - 1 do
koeff126 := I;
with OracleDataSet1 do
begin
Insert;
WriteKoeff(FieldByName('r4'), koeff126, 126);
Post;
end;
end;
procedure TForm1.WriteKoeff(fld: TField; koeff: array of Single;
nKoeff: Integer);
var
aMS: TMemoryStream;
i: Integer;
s: String;
pB: PByte;
begin
aMS := nil;
try
aMS := TMemoryStream.Create;
// Werte erstmal in Stream speichern
for i := 0 to nKoeff - 1 do
aMS.Write(koeff, sizeof(Single));
// aus dem Stream einen HEXADEZIMAL-String erzeugen
s := '';
pB := PByte(aMS.Memory);
for i := 0 to aMS.Size - 1 do
begin
s := s + IntToHex(pB^,2);
Inc (pB);
end;
fld.AsString := s;
finally
if aMS nil then FreeAndNil(aMS);
end;
end;
I'm facing some trouble with raw field's in oracle. I made a simple test case with a raw field with 504 Bytes:
>>>>>>>>>
create table test (r4 RAW(504));
>
procedure TForm1.Button1Click(Sender: TObject);
var
koeff126: array[0..125] of Single;
I: Integer;
begin
for I := 0 to 126 - 1 do
koeff126 := I;
with OracleDataSet1 do
begin
Insert;
WriteKoeff(FieldByName('r4'), koeff126, 126);
Post;
end;
end;
procedure TForm1.WriteKoeff(fld: TField; koeff: array of Single;
nKoeff: Integer);
var
aMS: TMemoryStream;
i: Integer;
s: String;
pB: PByte;
begin
aMS := nil;
try
aMS := TMemoryStream.Create;
// Werte erstmal in Stream speichern
for i := 0 to nKoeff - 1 do
aMS.Write(koeff, sizeof(Single));
// aus dem Stream einen HEXADEZIMAL-String erzeugen
s := '';
pB := PByte(aMS.Memory);
for i := 0 to aMS.Size - 1 do
begin
s := s + IntToHex(pB^,2);
Inc (pB);
end;
fld.AsString := s;
finally
if aMS nil then FreeAndNil(aMS);
end;
end;