Now this is possitively puzzling:

When there are no characters assosiated with the account, the packet is received and everything "works".

When there is a character assosiated with the account, the client actually crashes BEFORE the servers sends the responce.

ARGH!

EDIT: Finally found out that it has something to do with my custom ConvertUtils unit, wich i use to put and extract different types from strings.
(IntToRaw(Int: Integer) for instace, returns a 4-byte string, containing the integer)

i have recently redone it totally, and i am sad to say i must have messed it up quite badly...

here is the source for the functions:

[pascal]
Function StrToRaw(Str: String): String;
begin
Result:= IntToHex(Length(Str),2);
Result:= HexToStr(Result);
Result:= Result+Str;
end;

Function BoolToRaw(Bool: Boolean): String;
begin
if Bool then Result:= IntToHex(255,2)
else Result:= IntToHex(0,2);
Result:= HexToStr(Result);
end;

Function ByteToRaw(Byt: Byte): String;
begin
Result:= Chr(Byt);
end;

Function IntToRaw(Integr: Integer): String;
var
PS: PString;
begin
PS:= PString(@Integr);
Result:= PS^;
end;

Function Int64ToRaw(Integr: Int64): String;
var
PS: PString;
begin
PS:= PString(@Integr);
Result:= PS^;
end;

Function SingleToRaw(Singl: Single): String;
var
PS: PString;
begin
PS:= PString(@Singl);
Result:= PS^;
end;

Function GetInt(var RawStr: String): Integer;
var
IntStr: String;
PI: PInteger;
begin
IntStr:= LeftStr(RawStr,4);
Delete(RawStr,1,4);
PI:= PInteger(@IntStr);
Result:= PI^;
end;

Function GetInt64(var RawStr: String): Int64;
var
IntStr: String;
PI: PInt64;
begin
IntStr:= LeftStr(RawStr,;
Delete(RawStr,1,;
PI:= PInt64(@IntStr);
Result:= PI^;
end;

Function GetSingle(var RawStr: String): Single;
var
SinglStr: String;
ps: PSingle;
begin
SinglStr:= LeftStr(RawStr,4);
Delete(RawStr,1,4);
PS:= PSingle(@SinglStr);
Result:= PS^;
end;

Function GetByte(var RawStr: String): Byte;
var
PB: PByte;
ByteStr: String;
begin
ByteStr:= LeftStr(RawStr,1);
Delete(RawStr,1,1);
PB:= PByte(@ByteStr);
Result:= PB^;
end;

Function GetStr(var RawStr: String): String;
var
LenByte: Byte;
IntStr: String;
begin
IntStr:= StrToHex(RawStr[1]);
Delete(RawStr,1,1);
LenByte:= HexToInt(IntStr);
Result:= LeftStr(RawStr,LenByte);
Delete(RawStr,1,LenByte);
end;

Function GetBool(var RawStr: String): Boolean;
var
BoolByte: Byte;
begin
Result:= False;
BoolByte:= GetByte(RawStr);
if BoolByte = 255 then Result:= True;
end;
[/pascal]