Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Überprüfen ob TStringlist leer ist (https://www.delphipraxis.net/96221-ueberpruefen-ob-tstringlist-leer-ist.html)

Bastler 20. Jul 2007 10:39


Überprüfen ob TStringlist leer ist
 
Hallo;

Wie kann ich überprüfen, ob eine StringList leer ist ?

Ich suche etwas If-Taugliches, also so nach dem Motto: Wenn Liste=leer dann ... sonst...

Achja und ich möchte weder Count noch Capacity benutzen... was das ganze wohl etwas schwiriger macht... :?

Danke im Voraus für alle Antworten!

Tormentor32 20. Jul 2007 10:40

Re: Überprüfen ob TStringlist leer ist
 
EDIT:
Sorry :wall:

mkinzler 20. Jul 2007 10:40

Re: Überprüfen ob TStringlist leer ist
 
Zitat:

Achja und ich möchte weder Count noch Capacity benutzen
Und warum den nicht, wäre doch die sauberste Methode?

leddl 20. Jul 2007 10:41

Re: Überprüfen ob TStringlist leer ist
 
Zitat:

Zitat von Bastler
Achja und ich möchte weder Count noch Capacity benutzen...

:gruebel: Und wieso, wenn man fragen darf? Count ist nunmal der Standard für solche Sachen... :zwinker:

SirThornberry 20. Jul 2007 10:41

Re: Überprüfen ob TStringlist leer ist
 
warum nicht Count? Dann kannst du es nicht testen.

Spontan hätte ich zwar gesagt das du mit
Delphi-Quellcode:
if (StringList.Text = '') then
testen kannst aber ich bin mir nicht ganz sicher ob eventuell doch generell #13#10 hinten angehangen wird.

[Edit]
So eben getestet - es geht doch das man ".Text" auf '' prüft
[/Edit]

Bastler 20. Jul 2007 10:43

Re: Überprüfen ob TStringlist leer ist
 
Ehrlich gesagt, weil es nicht funktioniert, denn sonst hätte ich es schon gemacht. :wink:

Ich such mal eben den Code Schnipselraus, vllt. ist da ja auch noch n anderer Fehler...

@ SirThornberry: Da komtm die Meldung Inkompatible Typen, String und Stringlist... was ja auch stimmt.

// EDIT: Hier ist der Code:

Delphi-Quellcode:
function termine(datum:Tdate):TStringList;
var r,x:TStringlist;
    z:boolean;
    temp_ini:TIniFile;
begin
if ini.SectionExists(leftstr(datetostr(datum),2)) then
  z:=true;
if z then
  begin
  x:=Tstringlist.Create;
  ini.ReadSection(leftstr(datetostr(datum),2),x);
  end;
r:=Tstringlist.Create;
temp_ini:=Tinifile.Create(app_pfad+'täglich.ini');
if temp_ini.SectionExists('täglich') then
  begin
  temp_ini.ReadSection('täglich',r);
  end;
x.AddStrings(r);        //Das Problem schenit mir hier zu sein, wenn x nämlich leeer ist, addet er zwar angeblich r,
                         //aber meckert nacher bei result:x , bzw möchte das dann nciht übergeben.
                         // (x wird anschließend einer Listbox zugewiesen)
r.Free;
Result:=x

SirThornberry 20. Jul 2007 10:45

Re: Überprüfen ob TStringlist leer ist
 
dann machst du was falsch, bei mir klappt es:
Delphi-Quellcode:
var
  stringliste: TStringList;
begin
  stringliste := TStringList.Create();
  if (stringliste.Text = '') then
    caption := 'leer';
  stringliste.Free;

Bastler 20. Jul 2007 10:50

Re: Überprüfen ob TStringlist leer ist
 
Danke :thumb:
Klappt jetzt , ich vergas den Text zu vergleichen und habe deshalb zuerst nur x='' geschrieben udn nicht x.text='' ...

DeddyH 20. Jul 2007 10:52

Re: Überprüfen ob TStringlist leer ist
 
Mit fällt auf, dass x nur dann erzeugt wird, wenn z true ist. Weiter unten wird aber nicht geprüft, ob x überhaupt erzeugt wurde.

Nuclear-Ping 20. Jul 2007 10:57

Re: Überprüfen ob TStringlist leer ist
 
Zitat:

Zitat von Bastler
Delphi-Quellcode:
function termine(datum:Tdate):TStringList;
var r,x:TStringlist;
    z:boolean;
    temp_ini:TIniFile;
begin
if ini.SectionExists(leftstr(datetostr(datum),2)) then
  z:=true;
if z then
  begin
  x:=Tstringlist.Create; // << x wird nur erzeugt, wenn z TRUE ist
  ini.ReadSection(leftstr(datetostr(datum),2),x);
  end;
r:=Tstringlist.Create;
temp_ini:=Tinifile.Create(app_pfad+'täglich.ini');
if temp_ini.SectionExists('täglich') then
  begin
  temp_ini.ReadSection('täglich',r);
  end;
x.AddStrings(r);        // << Und was machst du dann hier, wenn z FALSE ist? ;)
r.Free;
Result:=x

[edit]
Arg, Deddy du schnellschreiber. :mrgreen:
Kam keine rote Box.
[/edit]

Ralf Kaiser 20. Jul 2007 10:57

Re: Überprüfen ob TStringlist leer ist
 
Zitat:

Zitat von Bastler

x.AddStrings(r); //Das Problem schenit mir hier zu sein, wenn x nämlich leeer ist, addet er zwar angeblich r,
//aber meckert nacher bei result:x , bzw möchte das dann nciht übergeben.

Was bedeutet denn "er meckert"? Wie lautet die genaue Fehlermeldung und wie äussert sich das "möchte er nicht übergeben"?

Ich vermute nämlich, dass deine StringList "x" nicht leer ist sondern garnicht erzeugt wird (passier wenn den "z" false ist da die Stringlist innerhalb der Abfrage erst erzeugt und hinterher ohne Prüfung benutzt wird.

Wenn du uns sagts, welcher Fehler angezeigt wird dann ist eine Diagnose wesentlich einfacher.

Ralf

EDIT: kein roter Kasten (anderen war das mit dem "z" auch schon aufgefallen...)

Hawkeye219 20. Jul 2007 10:58

Re: Überprüfen ob TStringlist leer ist
 
Zitat:

Zitat von DeddyH
Mit fällt auf, dass x nur dann erzeugt wird, wenn z true ist.

...und z durchaus einen Zufallswert enthalten kann.

Gruß Hawkeye

Nuclear-Ping 20. Jul 2007 10:59

Re: Überprüfen ob TStringlist leer ist
 
Ja, ich glaube das sind auch die Gründe, warum angeblich ".Count" nicht funktioniert. ;)

DeddyH 20. Jul 2007 11:01

Re: Überprüfen ob TStringlist leer ist
 
Zitat:

Zitat von Hawkeye219
Zitat:

Zitat von DeddyH
Mit fällt auf, dass x nur dann erzeugt wird, wenn z true ist.

...und z durchaus einen Zufallswert enthalten kann.

Stimmt. Statt
Delphi-Quellcode:
if ini.SectionExists(leftstr(datetostr(datum),2)) then
  z:=true;
sollte man besser schreiben
Delphi-Quellcode:
z := ini.SectionExists(leftstr(datetostr(datum),2));


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:40 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