Entwickler-Ecke

Sonstiges (Delphi) - Listview eintrag ersetzten...


raven - Di 11.02.03 21:27
Titel: Listview eintrag ersetzten...
hi leutz

ich habe eine listview mit 2 spalten ... in der rechten spalte steht ein status drin ... wenn da "Fertig" oder "Fehler" drinsteht dann soll das so bleiben, wenn was anderes drinsteht, dann soll es durch abort ersetzt werden ... ich hab nun folgendes geschrieben was aus meinen augen eigentlich funtzen müsste ... tut es aber nich, es schreibt überall Abort rein auch wenn fehler oder fertig drinsteht...

kann mir einer helfen?

Der code:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
       for f := 0 to form1.filebox.items.count-1 do
           begin
                if (log.Items.Item[f].SubItems.Text = 'Fertig') or (log.Items.Item[f].SubItems.Text = 'Fehler') then
                begin
                application.ProcessMessages;
                end
                else
                begin
                log.Items.Item[f].SubItems.Text := 'Abort';
                end;
              end;


Aya - Di 11.02.03 21:50

Hi,

mach doch mal in die For-Schleife das rein:


Quelltext
1:
ShowMessage('"'+log.Items.Item[f].SubItems.Text+'"');                    


Dann siehst du ob du eventuell irgendein unsichtbares Zeichen o.ä. nich berücksichtigst... :)

Au'revoir,
Aya~

PS: Groß und Kleinschreibung beachtet?


raven - Di 11.02.03 22:46

@aya

danke aber das einzige was irgendwie komisch ist, is das das zweite gänsefüschen in der 2. zeile ersceint in der messagebox also das es nach dem wort einen zeilenumbruch gibt ...

da die werte aber so

log.Items.Item[k].SubItems.Text := 'Fehler';

festgelegt werden muss das normal stimmen wi es ist...

weiß einer weiter??


smiegel - Di 11.02.03 22:59

Hallo,

versuche es einmal so:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
for f := 0 to form1.filebox.items.count-1 do 
begin 
  if (log.Items.Item[f].SubItems[0] = 'Fertig') or (log.Items.Item[f].SubItems[0] = 'Fehler') then 
  begin 
    application.ProcessMessages; 
   end 
   else 
   begin 
     log.Items.Item[f].SubItems[0] := 'Abort'; 
   end; 
end;


Außerdem verstehe ich nicht, warum die Schleife die Items aus einer "FileBox" und die Listview "log" heißt?


Aya - Di 11.02.03 23:14


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
      for f := 0 to form1.filebox.items.count-1 do 
           begin 
                if (Trim(log.Items.Item[f].SubItems.Text) = 'Fertig') or (Trim(log.Items.Item[f].SubItems.Text) = 'Fehler') then 
                begin 
                application.ProcessMessages; 
                end 
                else 
                begin 
                log.Items.Item[f].SubItems.Text := 'Abort'; 
                end; 
              end;


sollte gehen


Tino - Mi 12.02.03 10:38

@raven: Ich hab mal eine Frage: Warum besorgst Du dir die Anzahl an Einträge mit folgendem Code

Quelltext
1:
form1.filebox.items.count-1                    

aber die Einträge sprichst Du wie folgt an:
log.Items.Item[f].. ???

Die Einträge sind doch dann eigentlich so anzusprechen:

Quelltext
1:
form1.filebox.items [f]...                    


Gruß
TINO


raven - Mi 12.02.03 13:54

@aya

danke das funtzt ;) kannste mir auch noch kurz sagen was das TRIM bewirkt? würde mich ma interessieren warum es so geht ;)


Delete - Mi 12.02.03 14:10

raven hat folgendes geschrieben:
@aya

danke das funtzt ;) kannste mir auch noch kurz sagen was das TRIM bewirkt? würde mich ma interessieren warum es so geht ;)


Ob du es glaubst oder nicht, die Frage kannst du dir selber beantworten. :roll:


Aya - Mi 12.02.03 14:18

Hi,

Trim löscht einfach alle "unsichtbaren" Zeichen am anfang und ende eines Strings.. :)

Au'revoir,
Aya