AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FMX - DX10: CheckItemRangeInline Error

Ein Thema von Harry Stahl · begonnen am 20. Dez 2015 · letzter Beitrag vom 20. Dez 2015
Antwort Antwort
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.533 Beiträge
 
Delphi 11 Alexandria
 
#1

FMX - DX10: CheckItemRangeInline Error

  Alt 20. Dez 2015, 15:27
Wenn ich einer Listbox einige String-Items zuweisen will, kracht es hin und wieder mal:

Delphi-Quellcode:
  if Timo.slFaellig.count > 0 then begin
    lbFaellig.Items.Assign(Timo.slFaellig); --> Hier kommt der Fehler
    Timo.slfaellig.clear;
  end;
Und zwar wird der Fehler in

Delphi-Quellcode:
procedure TListHelper.CheckItemRange(AIndex: Integer);
begin
  CheckItemRangeInline(AIndex);
end;
ausgelöst (Access Violation, In unit System.Generics.Collections).

Die Aktion findet in einem Timer-Event statt, in dem in der Listbox die fälligen Termine aktualisiert werden sollen.

Hat jemand hier schon mal entsprechende Probleme gehabt?

Ist das ein Bug?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.067 Beiträge
 
Delphi 12 Athens
 
#2

AW: FMX - DX10: CheckItemRangeInline Error

  Alt 20. Dez 2015, 19:57
Ein Stacktrace wäre geil, denn wer CheckItemRange aufruft, wäre eine wichtige informative Information.

Bei mir fand ich nur
Delphi-Quellcode:
function TList<T>.GetItem(Index: Integer): T;
begin
  FListHelper.CheckItemRange(Index);
  Result := FItems[Index];
end;
und demnach würde dein Programm versuchen auf ein Item zuzugreifen, welches nicht existiert.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#3

AW: FMX - DX10: CheckItemRangeInline Error

  Alt 20. Dez 2015, 22:53
und demnach würde dein Programm versuchen auf ein Item zuzugreifen, welches nicht existiert.
Das ganze findet innerhalb eines TStrings.Assign statt. Ich vermute also, der Aufruf geht über TStrings.AddStrings -> TCustomListBox.TListBoxStrings.Get -> TCustomListBox.GetListItem -> TCustomListBox.ItemByIndex -> TControlList.GetItem , wobei TControlList = TList<TControl> der erste Zugriff auf eine generische Liste ist.

Näheres kann man ohne mehr Code aber schlecht sagen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.533 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: FMX - DX10: CheckItemRangeInline Error

  Alt 20. Dez 2015, 23:42
Die Listbox ist mit Ihren ListboxItems recht empfindlich.

Wahrscheinlich war das Problem, das die Timer-Arbeiten noch eine Phase fiel, wo die Form noch nicht angezeigt wurde.

Hier ist FMX äußerst empfindlich, man kann sich hier schnell Probleme mit noch nicht richtig Initialisierten Objekten einfangen.

Habe jetzt mit verschiedenen Aktionen sichergestellt, dass die Timer-Aktion erst stattfindet, wenn die Form einmal ganz angezeigt wurde. Problem ist nun verschwunden.

Mal am Rande: Von diesem Problemchen (und anderen kleinen) mal abgesehen, macht es mir gerade Riesen-Freude mit Delphi 10 Seattle und FMX zu arbeiten (hatte bislang noch eher mit XE7 die "realen" Projekte bearbeitet).

Hier sind Riesen-Performance-Verbesserungen (bei FMX) festzustellen, alles geht deutlich schneller... und die Delphi-IDE ist wirklich super...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz