AGB  ·  Datenschutz  ·  Impressum  







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

Listview.Count liefert 0 trotz zweier Einträge

Ein Thema von hyype · begonnen am 28. Nov 2012 · letzter Beitrag vom 28. Nov 2012
Antwort Antwort
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Listview.Count liefert 0 trotz zweier Einträge

  Alt 28. Nov 2012, 11:28
ganz lapidar, ein .Repaint könnte dem abhelfen.

Delphi-Quellcode:
    Form1Panel.Caption := ListView1.Items.Count;
    form1Panel.Repaint;
Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Listview.Count liefert 0 trotz zweier Einträge

  Alt 28. Nov 2012, 12:06
Die Zuweisung an Caption sollte eigentlich (intern) ein Repaint auslösen.

Wie und wo wird denn Form2 erzeugt?
Bei den bösen globalen Variablen hat man einen Spaß, wenn da zwei Forms erstellt und darin gespeichert werden ... da sieht man dann gerne mal was Anderes, als das, worauf man über diese Variable zugreift.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (28. Nov 2012 um 12:16 Uhr)
  Mit Zitat antworten Zitat
hyype

Registriert seit: 5. Nov 2008
97 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Listview.Count liefert 0 trotz zweier Einträge

  Alt 28. Nov 2012, 12:19
das Form1 ist das MainForm der Anwendung
das Form2 wird auch bei Programmstart erzeugt per
Application.CreateForm

Hintergrund des ganzen ist:
Es gibt 2 Server und auf jedem dieser Server laufen 2 Programme dieser Art.
Diese 4 Programme synchronisieren sich via TCP.
Die Verbindungsinformationen bestehender Verbindungen werden in dem ListView angezeigt.
Wenn nun dieser Bug auftritt, welcher u.U. nur ein Anzeige-Bug ist,
funktioniert automatisch der Datenaustausch zwischen den Programmen nicht mehr.
Wenn ich dann das Form mit dem ListView anzeige, wird nicht nur die Caption des Panels korrigiert,
sondern der Datenversand zwischen den Programmen läuft wieder, der vorher definitiv nicht lief!
Ich denke, dass das Anzeige-Problem und das TCP-Problem zusammenhängen, daher habe ich das Anzeige-Problem hier thematisiert.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.232 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Listview.Count liefert 0 trotz zweier Einträge

  Alt 28. Nov 2012, 12:22
Läuft den alles im Haupthread? Wenn ich hier TCP und Server höre da könnte es sein das die TCP-Kommunikation in einem Thread abläuft welche nicht einfach auf GUI-Elemente zugreifen darf.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
hyype

Registriert seit: 5. Nov 2008
97 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Listview.Count liefert 0 trotz zweier Einträge

  Alt 28. Nov 2012, 13:25
das läuft theoretisch alles im mainthread, praktisch erzeugt delphi aber mehrere threads daraus.
im quellcode der anwendung wird aber nirgends ein thread erzeugt,
auch die tcp-komponente erzeugt keinen eigenen thread pro connection.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Listview.Count liefert 0 trotz zweier Einträge

  Alt 28. Nov 2012, 14:29
Nicht nur theoretisch ... das muß auch praktisch immer im Hauptthread laufen.
Wenn nicht, dann mußt du synchronisieren.

auch die tcp-komponente erzeugt keinen eigenen thread pro connection.
Eher selten ... das tun die meisten dieser Komponenten intern dennoch machen.

prüf es doch einfach und bau in die Aufrufe Folgendes ein:
Assert(MainThreadID = GetCurrentThreadId, 'nee, is doch''n Thread');
Ein Therapeut entspricht 1024 Gigapeut.
  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 11:41 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