AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

ListBox füllen

Ein Thema von geosucher · begonnen am 21. Jul 2014 · letzter Beitrag vom 25. Jul 2014
Antwort Antwort
geosucher

Registriert seit: 28. Aug 2006
36 Beiträge
 
#1

ListBox füllen

  Alt 21. Jul 2014, 20:53
Hallo zusammen,

habe ein - sicher ganz blödes - Problem, programmiere mit Delphi XE5 FireMonkey für Android (Samsung Galaxy Tab).
Ich möchte eine ListBox füllen mit folgendem Code:

Delphi-Quellcode:
var FI : array of TFileInfo;
    CountFI : Integer;

procedure TTabbedForm.LB_DatenSendenClick(Sender: TObject);
var i : Integer;
    anh : String;
begin
 TabControl1.ActiveTab:=DateiTab;
 for I := 0 to CountFI-1 do
  begin
   if FI[i].Datum<>'then
    anh:=FI[i].FileName+' * '+FI[i].Datum;
   if FI[i].Zeit<>'then
    anh:=anh+' '+FI[i].Zeit;
   ListBox2.Items.Add(anh);
  end;
end;
CountFI ist im Beispiel gleich 2. Das Array ist entsprechend gefüllt. In der App habe ich dann nur einen Eintrag.
Im Debug zeigt er auch nur die Schleife für den Wert 1 an....???

Hat jemand eine Idee?

Gruß

Geosucher
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: ListBox füllen

  Alt 21. Jul 2014, 21:07
Nur 1 oder nur 0?

Ich würde

for I := low(FI) to high(FI) do verwenden.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: ListBox füllen

  Alt 21. Jul 2014, 21:23
Wenn CountFI wirklich 2 ist, dann läuft der Code definitiv zwei Mal durch den code und fügt somit auch zwei einträge zu der ComboCox.


PS: Rate mal was passiert, wenn im zweiten oder x-ten Durchlauf mal das Datum = '' ist, also vorallem mit dem Inhalt von anh.
Oder was passiert, wenn im Zweiten und nachfolgenden Durchläufen Datum und Zeit leer sind ... was kommt dann wohl für ein Inhalt bei der ComboBox an?


Zitat:
high(FI)
Schlag ihm doch nicht sowas vor.
Er will ja scheinbar die Länge unbedingt extra speichern und nicht die Größe direkt aus dem Array auslesen.

Man könnte natürlich auch noch fragen warum diese Variablen eigentlich global sind und ob eine (Objekt)Liste nicht schöner wäre.
Und warum die Varialbe anh nicht ordentlich initialisiert wird. (schade daß in Delphi, bei Strings, die entsprechende Compilerwarnung nicht funktioniert)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (21. Jul 2014 um 21:27 Uhr)
  Mit Zitat antworten Zitat
geosucher

Registriert seit: 28. Aug 2006
36 Beiträge
 
#4

AW: ListBox füllen

  Alt 22. Jul 2014, 19:30
Hallo,

danke für Eure Antworten. Ich habe das ganze mal umgebaut:

Delphi-Quellcode:
procedure TTabbedForm.LB_DatenSendenClick(Sender: TObject);
var I : Integer;
    FF : array of TFileInfo;
begin
 SetLength(FF,5);
 FF[0].FileName:='a.kml';
 FF[1].FileName:='b.kml';
 FF[2].FileName:='c.kml';
 FF[3].FileName:='d.kml';
 FF[4].FileName:='e.kml';
 for I := Low(FF) to High(FF) do
  ListBox2.Items.Add(FF[i].FileName);
end;
Bringt mich nicht wirklich weiter, in der Listbox werden Einträge a.kml - d.kml angezeigt....

Gruß

Geosucher
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: ListBox füllen

  Alt 22. Jul 2014, 19:54
In anderen Systemen (Mac, Windows, iOS, iOS-Simulator, ...) wird alles angezeigt?
Und nur nochmal zur Sicherheit nachgefragt: Im Debugger oder anders geloggt/nachgesehn (MessageBox?) hast du bereits, ob wirklich die Schleife 2, bzw. 5 Mal durchlaufen wird?
Alle Updates sind installiert?

Es kann natürlich auch ein Bug sein und wenn, dann solltest du Diesen im QC melden.
(bzw. das Bugfix XE6/XE7 kaufen, wobei soein Fehler schon als gravierend genug sein sollte, daß es hierfür schnell einen Hotfix geben könnte)
Als schnellen Bugfix könntest du z.B. einfach einen Dummy-Eintrag an die Liste anhängen.
Delphi-Quellcode:
procedure TTabbedForm.LB_DatenSendenClick(Sender: TObject);
var I : Integer;
    FF : array of TFileInfo;
begin
  SetLength(FF,5);
  FF[0].FileName:='a.kml';
  FF[1].FileName:='b.kml';
  FF[2].FileName:='c.kml';
  FF[3].FileName:='d.kml';
  FF[4].FileName:='e.kml';
  for I := Low(FF) to High(FF) do
    ListBox2.Items.Add(FF[i].FileName);
  ListBox2.Items.Add('');
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (22. Jul 2014 um 19:58 Uhr)
  Mit Zitat antworten Zitat
geosucher

Registriert seit: 28. Aug 2006
36 Beiträge
 
#6

AW: ListBox füllen

  Alt 22. Jul 2014, 20:30
Hallo himitsu,

ich habe bisher nur die VCL-Variante getestet und die funktioniert glücklicherweise.
Ich habe RADStudio XE5 Update 2 installiert. Danach sollten noch 6 Hotfixes sein, muss ich noch
checken, ob da alles stimmt.
Die Idee mit dem dummy ist für das Erste eine Variante...

Danke!

Geosucher
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: ListBox füllen

  Alt 23. Jul 2014, 08:16
Mit Delphi XE6 (Emulator) funktioniert es. (Habe kein XE5 mehr installiert)
Miniaturansicht angehängter Grafiken
listboxandroid.jpg  
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

AW: ListBox füllen

  Alt 23. Jul 2014, 20:08
Also unter XE5, Update 2 funktioniert der Code:

Delphi-Quellcode:
unit Unit55;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
  FMX.Layouts, FMX.ListBox;

type
  TForm55 = class(TForm)
    ListBox1: TListBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form55: TForm55;

implementation

{$R *.fmx}

type
  TFileInfo = record
    FileName: string;
    Info: string;
  end;

procedure TForm55.Button1Click(Sender: TObject);
var I : Integer;
  FF : array of TFileInfo;
begin
  SetLength(FF,5);
  FF[0].FileName:='a.kml';
  FF[1].FileName:='b.kml';
  FF[2].FileName:='c.kml';
  FF[3].FileName:='d.kml';
  FF[4].FileName:='e.kml';
  for I := Low(FF) to High(FF) do
    ListBox1.Items.add(FF[i].FileName);
end;

end.
wie er soll, siehe anliegenden Screenshot vom Samsung-Device.
Miniaturansicht angehängter Grafiken
2014-07-23-21-07-49%5B1%5D.jpg  
  Mit Zitat antworten Zitat
geosucher

Registriert seit: 28. Aug 2006
36 Beiträge
 
#9

AW: ListBox füllen

  Alt 25. Jul 2014, 09:01
Ok, sorry mein Fehler! Ich habe auf der Listbox einen Button (align: alBottom). Der lag quasi über dem letzten Eintrag.
Liegt der Button nicht auf der Lsitbox ist alles ok. Sorry, hoffe ich habe nicht zu viel Arbeit gemacht....

Danke!

Geosucher
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 00:04 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