Интереса ради хочу вас спросить. При компиляции приведённого ниже кода delphi 7 выдаёт предупреждение: "Переменная ObjAccount может быть не инициализирована", указывая на строчку DoRouteQuery(self, UserAccount, since, till, ObjAccount); Прошу вас не вникая в суть кода попытаться найти путь выполнения программы, при котором эта переменная оказалась бы не инициализированной. О тчетных попытках также прошу сообщать.
| Код | procedure TSLS.ProcessRouteCmd( socket: TCustomWinSocket; since: TDateTime; till: TDateTime; objects: TStringList ); var UserAccount: TUserAccount; ObjAccount: TObjectAccount; LFS: TFormatSettings; stream: TStringStream; i: integer;
begin //Если команда поступила от авторизованного пользователя if assigned(socket.data) then begin if TAccount(socket.data) is TUserAccount then begin UserAccount:= TUserAccount(socket.data); UserAccount.IdleTimer.Enabled:= false; UserAccount.IdleTimer.Enabled:= true; stream:= TStringStream.Create(EmptyStr); if objects.Count > 0 then begin for i:= 0 to objects.count-1 do begin if UserAccount.AccessRights.GetRight(objects[i]) = arClient then begin ObjAccount:= ObjectAccounts.ObjByName(objects[i]); if assigned(ObjAccount) then begin ObjAccount.data.active:= true; if ObjAccount.data.FindFirst then begin GetLocaleFormatSettings(0, LFS); LFS.DecimalSeparator:= '.'; repeat if (ObjAccount.data.FieldByName('Moment').AsDateTime >= since) and (ObjAccount.data.FieldByName('Moment').AsDateTime <= till) then stream.WriteString( GPSDataToStr( GPSData( ObjAccount.data.FieldByName('Speed').AsFloat, ObjAccount.data.FieldByName('Moment').AsDateTime, ObjAccount.data.FieldByName('Lattitude').AsFloat, ObjAccount.data.FieldByName('Longtitude').AsFloat, ObjAccount.data.FieldByName('Moment').AsDateTime, ObjAccount.data.FieldByName('Engine').AsBoolean ) ) ); until not ObjAccount.data.FindNext; stream.WriteString(GPSStartCmd + strCEndOfListCmd + GPSEOC); end else raise ESLS.create(emNotData, ecCNotData); end else raise ESLS.create(emObjectNotFound, ecCObjectNotFound); end else raise ESLS.create(emAccessNotDefined, ecCAccessNotDefined); end;//for stream.Position:= 0; socket.SendStream(stream); DoRouteQuery(self, UserAccount, since, till, ObjAccount); end;//if end else raise ESLS.create(emAccessNotDefined, ecCAccessNotDefined); end else raise ESLS.create(emAccessNotDefined, ecCAccessNotDefined); end;
|
|