Guest_imported
New member
- Jan 1, 1970
- 0
Hallo,
I'm trying to convert the following source in C++ to Delphi:
#pragma pack(1)
typedef struct {
ULONG seq;
LARGE_INTEGER perftime;
LARGE_INTEGER datetime;
char text[0];
} ENTRY, *PENTRY;
#pragma pack()
#define LOGBUFSIZE ((ULONG)(64*0x400-(3*sizeof(ULONG)+1)))
char Stats[ LOGBUFSIZE ];
DWORD StatsLen;
PENTRY ptr;
for ( ptr = (void *)Stats; (char *)ptr < min(Stats+StatsLen,Stats + sizeof (Stats)); )
{
ULONG len = strlen(ptr->text);
...
ptr = (void *)(ptr->text + len + 1);
}
// Empty the buffer
StatsLen = 0;
Delphi:
_______
const
LOGBUFSIZE = ULONG((64*$400-(3*sizeof(ULONG)+1)));
type
PENTRY = ^ENTRY;
ENTRY =
packed record
seq : ULONG;
perftime : LARGE_INTEGER;
datetime : LARGE_INTEGER;
text : array[0..0] of Char;
end;
var
ptr : PENTRY;
Stats : array[0..LOGBUFSIZE-1] of char;
StatsLen : DWord;
fLoop : Boolean;
ges : Pointer;
begin
ptr:= @Stats;
fLoop := (StatsLen > 0);
while fLoop do
begin
...
____________________________________________________
ges:= (ptr^.text + length(ptr^.text)+1);
ptr:= @ges;
____________________________________________________
fLoop := StatsLen > 0;
end;
But I always get errors. Does anybody know what's wrong with the Delphi source?
I'm trying to convert the following source in C++ to Delphi:
#pragma pack(1)
typedef struct {
ULONG seq;
LARGE_INTEGER perftime;
LARGE_INTEGER datetime;
char text[0];
} ENTRY, *PENTRY;
#pragma pack()
#define LOGBUFSIZE ((ULONG)(64*0x400-(3*sizeof(ULONG)+1)))
char Stats[ LOGBUFSIZE ];
DWORD StatsLen;
PENTRY ptr;
for ( ptr = (void *)Stats; (char *)ptr < min(Stats+StatsLen,Stats + sizeof (Stats)); )
{
ULONG len = strlen(ptr->text);
...
ptr = (void *)(ptr->text + len + 1);
}
// Empty the buffer
StatsLen = 0;
Delphi:
_______
const
LOGBUFSIZE = ULONG((64*$400-(3*sizeof(ULONG)+1)));
type
PENTRY = ^ENTRY;
ENTRY =
packed record
seq : ULONG;
perftime : LARGE_INTEGER;
datetime : LARGE_INTEGER;
text : array[0..0] of Char;
end;
var
ptr : PENTRY;
Stats : array[0..LOGBUFSIZE-1] of char;
StatsLen : DWord;
fLoop : Boolean;
ges : Pointer;
begin
ptr:= @Stats;
fLoop := (StatsLen > 0);
while fLoop do
begin
...
____________________________________________________
ges:= (ptr^.text + length(ptr^.text)+1);
ptr:= @ges;
____________________________________________________
fLoop := StatsLen > 0;
end;
But I always get errors. Does anybody know what's wrong with the Delphi source?