Re: Help reading structured binary files




"Robert Kilroy" <kilroy@xxxxxxxxx> wrote in message
news:1121662250.936302.327560@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
> Greetings,
>
> I was given a task to read some binary files that we will be dumping
> into our database. The files are in key/value pairs in the format of:
>
> Field ID = 2 bytes ( (Byte2 * 256) + Byte1 )
> Field Length = 1 byte (0-255)
> Field Data = 1 to 255 bytes
> Files terminated by 2 bytes of 255
>
> I'm not entirely what these files are, I was told "Put these in the
> database".

> I was wondering if I could use some sort of Record structure, but
> either way it seems I need to read the third byte to get the length of
> the data. Maybe a BlockRead? But is there a faster way to convert each
> byte into its CHR value for a string?

Type
pLoadRec = ^ tLoadRec;
tLoadRec = packed record
id : ShortInt;
data : string [255];
terminator : array [0 .. 1] of byte;
end;

The simplest way to load the records with this type would be a file of
tLoadRec. A (file) stream would also work and might prove more flexible.

Instead of using a string list you could use a tList or dynamic array and
New & Dispose. Converting the id from a numeric to a string, unless its
necessary, is a relatively costly operation.


.



Relevant Pages

  • Re: A little Rolodex [revised]
    ... including alpha sort and searching for any embedded string, ... In this application, a database is a directory, ... you may optionally provide any alternate UCASE program, ... NN -> first store NN as key length ...
    (comp.sys.hp48)
  • Re: return multiple rows from sql statement
    ... strings from input values is almost certainly a safe path to SQL ... Also, being a MySQL function, it knows what MySQL needs or uses. ... All characters that are entered in the fields make their way into the database unaltered. ... The insert of what surprisinlgly was NOT a syntax error, but a string called "mysql_insert_id" into an integer field resulted in the value zero being put in. ...
    (comp.lang.php)
  • Re: Code to delete/unlink Linked tables
    ... Public intLinkODBCTables As Variant, intLinkDB2Tables As Variant ... Public strLinkBackendDB As String, strLinkDSNname As String, strLinkLibName ... ' MsgBox "This database is in MDE format...I will delete/recreate ODBC ... Public Sub fncLinkDB2Table() ...
    (microsoft.public.access.modulesdaovba)
  • Re: Establish connection with and transferring data to Access
    ... The specific problem with your code is that you need to quote string ... Dim vConnection As New ADODB.Connection ... Experiment with the object model or check the documentation for the ... Doug's code opens and writes to an existing database. ...
    (microsoft.public.word.vba.general)
  • Re: Invalid variant type conversion
    ... because within regular programming, there would be no agreement upon what ... applications built by standard Delphi controls, ... NULL is the same as "" in a database. ... >> The empty string tells it all. ...
    (comp.lang.pascal.delphi.misc)