Нужна помощь. Почему переменная " i " первый раз выводит правельное количество 8-рок ( 2 штуки ) а потом на 1 единицу меньше? (9 4- штуки. а печатает 3 )
вот содержимое файла mix2.txt Оффтоп
while(fscanf( fi, "%d", &n )) ;
после того как сосканила последние число из mix2.txt, программа не продолжается тупо висит. не переходит к этим строкам
Код:
Sleep(5000);
fclose(fi);
fclose(fo);
Sleep(5000);
и все равно на одну меньше выводит количество цифер.
алекс спасибо за помощь, одну часть задачи вроде решил. завтра продолжу 2ю
напишу сюда, чтобы не разводить флуд.
Столкнулся с проблемой считывания с памяти данных типа WideString;
процедура вызывается при приходе пакета UserInfo (UserInfo:d(X)d(Y)d(Z)d(Heading)d(ObjectID)s(Name) ...) где PPck указательна пакет без ID
Delphi Код:
Procedure OnUserInfo(PPck: pointer);
begin
UserInfo.X:=PDword(Dword(PPck))^;
UserInfo.Y:=PDword(Dword(PPck)+4)^;
UserInfo.Z:=PDword(Dword(PPck)+8)^;
UserInfo.ObjectID:=PDword(Dword(PPck)+16)^;
UserInfo.Name{<-тип WideString}:=PWideString(Dword(PPck)+20)^; //здесь ошибка Out Of Memory
...
Подозреваю надо как-то выделять память под это дело, или неправильно читаю. Подскажите плз
vahes, PWideString - это указатель на WideString который сам по сути является указателем, то есть указатель на указатель получается...
чтоб работало надо так:
delphi Код:
Procedure OnUserInfo(PPck: pointer);
begin
UserInfo.X:=PDword(Dword(PPck))^;
UserInfo.Y:=PDword(Dword(PPck)+4)^;
UserInfo.Z:=PDword(Dword(PPck)+8)^;
UserInfo.ObjectID:=PDword(Dword(PPck)+16)^;
UserInfo.Name:=PWideChar(Dword(PPck)+20);
...
и компилятор уже сам позаботится о превращении PWideChar в WideString
__________________
Я здесь практически не появляюсь!, Skype - ikskor