AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Eintrag aus Stringgrid mit Eintrag aus Listview vergleichen sehr langsam
Thema durchsuchen
Ansicht
Themen-Optionen

Eintrag aus Stringgrid mit Eintrag aus Listview vergleichen sehr langsam

Ein Thema von verkouter · begonnen am 30. Mär 2018 · letzter Beitrag vom 1. Apr 2018
Antwort Antwort
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Eintrag aus Stringgrid mit Eintrag aus Listview vergleichen sehr langsam

  Alt 31. Mär 2018, 11:38
Darf ich mal etwas Fragen was glaube ich zum Thema passt und helfen würde es besser zu Verstehen .... (das hat nichts mit dem Thema "suchen/vergleichen" am Hut sondern Perfomance bzw Logik)

Also man hat eine Datei, möchte sich aus der Datei Daten in ein Stringgrid Anzeigen lassen, nun füll ich das Stringgrid mit Daten weil sie ja visuell Dargestellt werden sollen.
Wenn ich nun die Daten vorher in eine TList oder Array oder sonst was lade/puffer um sie dann trotzdem visuell darzustellen, in wie fern beschleunigt es die visuelle Komponente wenn die Daten aus einem TList o.ä. kommen anstelle direkt von der Datei?

Mit dem Begin/EndUpdate hatte ich angemerkt "Falls es funktioniert" weil ich mir nicht sicher war, danke für Klarstellung.

Der zweite Tipp von mir allerdings sollte definitiv funktionieren da ich es selbst so einsetze, wobei anzumerken ist das ich bei mir mein Array und die Visuelle Komponente so abgestimmt habe das beide immer den gleichen Index besitzen was mir beim suchen und anzeigen einen enormen Performance Vorteil einbringt. (suchen in einem Array mit 500.000 Einträgen = wenn es langsam ist (CPU/Core auslastung hoch) dauerts zwei bis drei Sekunden aber in der Regel ist ein Ergebniss unter einer Sekunde da)
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#2

AW: Eintrag aus Stringgrid mit Eintrag aus Listview vergleichen sehr langsam

  Alt 31. Mär 2018, 11:47
Zitat:
in wie fern beschleunigt es die visuelle Komponente wenn die Daten aus einem TList o.ä. kommen anstelle direkt von der Datei?
Meiner Meinung nach gibt es da keinen nennenswerten Unterschied wenn man mal von den Lesevorgängen von der Festplatte absieht.

Von einer Liste zu laden hat aber den unschlagbaren Vorteil, dass man immer alle Daten parat und schon in einer passenden Datenstruktur hat und nicht immer wieder von der Festplatte lesen und aufbereiten muss.
Auf Dauer könnte es also schneller sein, nicht aber bei einmaliger Anwendung.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Eintrag aus Stringgrid mit Eintrag aus Listview vergleichen sehr langsam

  Alt 31. Mär 2018, 12:22
Ah Okay, das Verstehe sogar ich
Klingt ja auch logisch im Nachhinein
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Eintrag aus Stringgrid mit Eintrag aus Listview vergleichen sehr langsam

  Alt 31. Mär 2018, 13:23
Zitat:
Meiner Meinung nach gibt es da keinen nennenswerten Unterschied wenn man mal von den Lesevorgängen von der Festplatte absieht.
Dann nenne ich dir einen.
Es könnten unnötige Messagen aufgerufen werden wenn ich Daten direkt aus einer Visuellen Komponente abrufe.
Zum Beispiel WM_PAINT ob das erwünscht und tragbar ist mag dahin gestellt sein.

Und ja wenn es so ist macht es sehr wohl einen großen Unterschied.

gruss
  Mit Zitat antworten Zitat
günni0
(Gast)

n/a Beiträge
 
#5

AW: Eintrag aus Stringgrid mit Eintrag aus Listview vergleichen sehr langsam

  Alt 31. Mär 2018, 14:25
Zitat:
Meiner Meinung nach gibt es da keinen nennenswerten Unterschied wenn man mal von den Lesevorgängen von der Festplatte absieht.
Dann nenne ich dir einen.
Es könnten unnötige Messagen aufgerufen werden wenn ich Daten direkt aus einer Visuellen Komponente abrufe.
Zum Beispiel WM_PAINT ob das erwünscht und tragbar ist mag dahin gestellt sein.

Und ja wenn es so ist macht es sehr wohl einen großen Unterschied.

gruss
Ob WM_PAINT oder nicht ist völlig egal. Denn beim Befüllen der visuellen Komponente aus der Listenstruktur wird es ohnehin aufgerufen.
Also zählt WM_PAINT nicht.
  Mit Zitat antworten Zitat
verkouter

Registriert seit: 29. Dez 2004
64 Beiträge
 
Delphi 2010 Architect
 
#6

AW: Eintrag aus Stringgrid mit Eintrag aus Listview vergleichen sehr langsam

  Alt 31. Mär 2018, 16:31
Die Daten in dem Stringgrid sind der Größe nach sortiert (Bohrpunkte).
Die Listview enthält mehrere Subitems mit Datum usw. und werden vom Anwender umsortiert.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.602 Beiträge
 
Delphi 7 Professional
 
#7

AW: Eintrag aus Stringgrid mit Eintrag aus Listview vergleichen sehr langsam

  Alt 31. Mär 2018, 17:29
Ist das richtig, Du nutzt Delphi 6?
Bei Delphi 7 verfügt TListView über die Methoden FindCaption und FindData. Gab es die bei Delphi 6 noch nicht?

Wenn es sie bereits geben sollte, könnten sie eventuell eine Alternative für die Suche sein, statt über alle Einträge zu iterieren.

Zitat von Delphi 7 - Hilfe:
FindCaption (Methode von TCustomListView)

Die Methode FindCaption gibt einen Listeneintrag mit dem angegebenen Titel zurück.

Delphi-Syntax:

function FindCaption(StartIndex: Integer; Value: string; Partial, Inclusive, Wrap: Boolean): TListItem;

C++ Syntax:

TListItem* __fastcall FindCaption(int StartIndex, AnsiString Value, bool Partial, bool Inclusive, bool Wrap);

Beschreibung

Mit FindCaption können Sie nach dem Eintrag in der Liste suchen, dessen Titel mit dem String im Parameter Value identisch ist. Wenn der Parameter Inclusive den Wert true hat, wird die Überprüfung bei dem in StartIndex angegebenen Listeneintrag begonnen. Andernfalls beginnt die Suche beim nächsten Element. Ist der Parameter Wrap true, wird die Suche am Anfang der Liste fortgesetzt, wenn der gesuchte Eintrag bis zum Listenende nicht gefunden wurde. FindCaption gibt den ersten Eintrag zurück, dessen Eigenschaft Caption mit Value identisch ist. Wenn der Parameter Partial auf true gesetzt wird, werden auch Titel gefunden, die mit dem Teilstring Value beginnen. Hat Partial den Wert false, wird nach einer genauen Übereinstimmung gesucht. Wenn kein Eintrag gefunden wird, gibt FindCaption nil (Delphi) bzw. NULL (C++) zurück.
Eine ganz blöde Idee:

Manchmal kann es die Arbeit mit visuellen Komponenten deutlich beschleunigen, wenn man das Programm solange minimiert.

Delphi-Quellcode:
procedure TForm1.ToolButton23Click(Sender: TObject);
var
  lvItem: TListItem;
begin
  Application.Minimize;
  for I := stringgrid2.RowCount-1 downto 1 do
  begin
    lvItem := FindListViewItem(ListView1, stringgrid2.Cells[0,i], 1);
    if lvItem <> nil then
    begin
     {mach was}
    end;
  end;
  Application.Restore;
end;
Und nein, elegant ist das nicht.
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
796 Beiträge
 
#8

AW: Eintrag aus Stringgrid mit Eintrag aus Listview vergleichen sehr langsam

  Alt 31. Mär 2018, 13:48
Also man hat eine Datei, möchte sich aus der Datei Daten in ein Stringgrid Anzeigen lassen, nun füll ich das Stringgrid mit Daten weil sie ja visuell Dargestellt werden sollen.
Wenn ich nun die Daten vorher in eine TList oder Array oder sonst was lade/puffer um sie dann trotzdem visuell darzustellen, in wie fern beschleunigt es die visuelle Komponente wenn die Daten aus einem TList o.ä. kommen anstelle direkt von der Datei?
Du kannst den Inhalt des StringGrid auch selber zeichnen (onDrawCell), dann sparst du dir das Kopieren/Speichern im StringGrid.
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.745 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: Eintrag aus Stringgrid mit Eintrag aus Listview vergleichen sehr langsam

  Alt 31. Mär 2018, 18:01
Also man hat eine Datei, möchte sich aus der Datei Daten in ein Stringgrid Anzeigen lassen, nun füll ich das Stringgrid mit Daten weil sie ja visuell Dargestellt werden sollen.
Wenn ich nun die Daten vorher in eine TList oder Array oder sonst was lade/puffer um sie dann trotzdem visuell darzustellen, in wie fern beschleunigt es die visuelle Komponente wenn die Daten aus einem TList o.ä. kommen anstelle direkt von der Datei?
Für sowas bieten sich virtuelle aka owner drawn controls an. Z.B. mein dzVirtualStringGrid (oder man programmiert es halt selbst, ist kein großer Akt). Dann lädt man die Daten nur noch in den Speicher und zeigt sie per Events an.
Thomas Mueller
  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 08:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz