ah... i thought it had checked that it wasnt a register.

i now have a strange problem, though:
when i use getint or getsingle, it sometimes doesent terurn the way it should.

for instance in my CharEnum:

[pascal]
procedure HandleCharEnum(Data: String);
var
Name : String;
Location : String;
HP,
MaxHP,
MP,
MaxMP : Single;
CharID : Integer;
SpriteID : Integer;
NumItems : Integer;

NewChar : TCharEnum;

ItmName : String;
ItmDesc : String;
ItmIcon: Integer;

i : Integer;
begin
Controller.CharEnums.Clear;
while Length(Data) > 31 do
begin
CharID := GetInt(Data);
GetInt(Data); <- had to add this
Name := GetStr(Data);
Location := GetStr(Data);
SpriteID := GetInt(Data);
GetInt(Data); <- had to add this
HP := GetSingle(Data);
MaxHP := GetSingle(Data);
MP := GetSingle(Data);
MaxMP := GetSingle(Data);
GetSingle(Data); <- I had to add this
NumItems := GetByte(Data);

Controller.CharEnums.Add(CharID,Name,Location,HP,M axHP,MP,MaxMP,SpriteID);

i:= 0;

while (i <NumItems> 10) do
begin
ItmName := GetStr(Data);
ItmDesc := GetStr(Data);
ItmIcon := GetInt(Data);
Controller.CharEnums.GetSelected.AddItem(ItmName,I tmDesc,ItmIcon);
Inc(i);
end;

end;
end;
[/pascal]

i've marked the special stuff with "<- i had to add this".

the thing is: when a getsingle or getint is followed by some other get-function, it seems not to return properly. the getsingle randomly changed the MaxMP (before i added the ownerless GetSingle(Data; under it), and the CharID and SpriteID was left untouched (at their random init values, wich more often than rare is more than 400000)

I will see if i can rewrite the functions to assembly within the next few hours (got to eat first, and so on. i'm not THAT slow at writing code). but i have a poker tourney later today, so i expect i wont get much work done....

MVH
Diaboli

P.S:
heres a pic of the CharEnum screen, as it should be (some graphics are not properly made yet, so it doesent all match):