Solved

# binary

Posted on 1998-12-03
284 Views
What is the fastest way to insert a record with binary data in TQuery ?

Andrew
0
Question by:andrewyu
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 4
• 3

LVL 8

Expert Comment

ID: 1349113
how do you mean?
0

Author Comment

ID: 1349114
How can I select the record with a field type is binary in TQuery ?

Andrew
0

LVL 3

Accepted Solution

williams2 earned 40 total points
ID: 1349115
This will handle the record thing, isn't that what you mean?
(Just cut'n'paste to a default unit)

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

Type

pRecord = ^TRecord;
TRecord = record
S: String[123];
BlaBla: Integer;
End;

TData = Array[0..SizeOf(TRecord)-1] of Byte;

type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{\$R *.DFM}

Procedure BinToRecord(pRec: pRecord; var Data: TData);
var
p: pByteArray;
i: Integer;
Begin
p:= Pointer(pRec);
For i:= 0 to SizeOf(TData)-1 do p[i]:= Data[i];
End;

Procedure RecordToBin(pRec: pRecord; var Data: TData);
var
p: pByteArray;
i: Integer;
Begin
p:= Pointer(pRec);
For i:= 0 to SizeOf(TData)-1 do Data[i]:= p[i];
End;

procedure TForm1.FormCreate(Sender: TObject);
Var
Rec1,Rec2: TRecord;
Data: TData;
begin
Rec1.BlaBla:= 7;
Rec1.S:= 'Test me';
RecordToBin(@Rec1,Data);
BinToRecord(@Rec2,Data);
ShowMessage(Rec2.S+' : '+IntToStr(Rec2.BlaBla));
end;

end.

0

Author Comment

ID: 1349116
Actually, I want to know how can I locate the record by the binary field in SQL select command ?

Anyway, thank you very much !

Andrew
0

LVL 3

Expert Comment

ID: 1349117
Oh, I think I misuderstood your question then.

Under these circumstances you normally don't. What you do is to create a name for the record, and then select it by f.ex.:

"SELECT BinaryFieldname,BinaryField FROM BinTable WHERE BinaryFieldName='test'"

You normally don't want to search for a stream with the stream as a criteria. Even if it could be done, the query would be very slow. If You do not want to use names, number indexes works even better.

Cheers
Williams
0

Author Comment

ID: 1349118
So, do you mean the 'test' can be any ASCII code from 0-255 ?

Andrew
0

LVL 3

Expert Comment

ID: 1349119
'test' can be any name from 'A','AAA' to 'Anders', but!!!! ..SQL is NOT case-sensitive, so if you are working with strings, you should not rely on ASCII values, only if you deal with strict Char types (not ANSI, they are WideChars!)

But I ment, you should be able to index the table by some kind of primarykey, which is a unique number or name identified with the table entry, it works the same way as the handle system works in windows.

If you need any help doing it, just say so. I've done it with severel types of databases.

Regards
Williams
0

Author Comment

ID: 1349120
I understand and I think I will use the TTable in this case ! But, is TTable much slower than the TQuery when I use it on the Oracle, Sybase, Interbase or MS-SQL ?

Anyway, thank you very much !

Andrew
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

### Suggested Solutions

When I am typing into a TEdit last word repeats 7 179
find a node in VST 2 93
Base1 Encode/Decode 3 100
Remove all child-forms from a parent-panel 16 17
A lot of questions regard threads in Delphi.   One of the more specific questions is how to show progress of the thread.   Updating a progressbar from inside a thread is a mistake. A solution to this would be to send a synchronized message to the…
This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…
Attackers love to prey on accounts that have privileges. Reducing privileged accounts and protecting privileged accounts therefore is paramount. Users, groups, and service accounts need to be protected to help protect the entire Active Directory …
Why Skyport?
###### Suggested Courses
Course of the Month2 days, 7 hours left to enroll