|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Access violation - Delphi/RAD XE3+
Всем доброго времени суток.
Интересует вопрос: Не могу понять что за ошибку показывает Embarcadero® RAD Studio 10.1 Berlin. То есть: запускаю программу нажимаю кнопку и появляется ошибка - access violation at address in module project1.exe. read of address FFFFFFFF. На форме кнопка и код (Ошибку показал на прикрепленных картинках): Код:
Var I,First:Integer; SLInS,S:String; SLIn,SLOut:TStringList; DictionaryArray: TArray<TPair<string, integer>>; DictionaryArrayItem: TPair<string, integer>; Dictionary : TDictionary<String,Integer>; begin First:=4; Dictionary:= TDictionary<String,Integer>.Create; SLOut:=TStringList.Create; SLIn:=TStringList.Create; SLIn.LoadFromFile('Out.txt'); SLIn.Delimiter:=' '; SLIn.DelimitedText:=SLIn.Text; For I:=0 to slIn.Count-1 do Begin SLInS:=slIn.Strings[i]; if Pos(':',SLInS)<>0 Then delete(SLInS,1,Pos(':',SLInS)); If Dictionary.ContainsKey(SLInS) then Dictionary[SLInS]:=Dictionary[SLInS]+1 Else Dictionary.Add(SLInS,1); End; DictionaryArray := Dictionary.ToArray; TArray.Sort<TPair<string, integer>>( DictionaryArray, TComparer<TPair<string, integer>>.Construct( function (const Left, Right: TPair<string, integer>): Integer begin Result := CompareStr(Left.Value.ToString, Right.Value.ToString); if Result = 0 then Result := CompareStr(Left.Key, Right.Key); end)); for I :=Length(DictionaryArray)-1 downto Length(DictionaryArray)-First do SLOut.add(Format('%s: %s',[DictionaryArray[i].Key,DictionaryArray[i].Value.ToString])); SLOut.SaveToFile('REZ.txt'); Dictionary.Free; SLIn.Free; SLOut.Free; end; |
#2
|
||||
|
||||
Возможно, где-то используется объект, параметры которого не определены. Найдите методом исключения место, где возникает проблема: после первой строки поставьте "exit", запустите. Если сработает - опускайтесь ниже, пока не вылезет ошибка. А лучше с середины начинать, всякий раз деля подозрительный участок кода exit-ом на две части - так быстрее будет.
|
Этот пользователь сказал Спасибо Guaho за это полезное сообщение: | ||
Taras2020 (22.04.2018)
|