Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi liste.IndexOf? (https://www.delphipraxis.net/114425-liste-indexof.html)

Jiro 25. Mai 2008 10:54


liste.IndexOf?
 
Ich habe ein ausgabe programm geschrieben, aber wenn in der ausgabe.txt nur eine Zeile drin ist, steht als exception Index überschreitet das Maximum.
ausgabefeld 1 und 2 sind Labels. Wie kann ich machen, dass bei einer Zeile die Zeile angezeigt wird?

Delphi-Quellcode:
procedure Ttextausgabe.FormActivate(Sender: TObject);
var
ausgabeliste : TStrings;
i:integer;
 begin
begin
ausgabeliste := TStringlist.Create;
   if fileexists ('ausgabe.txt')


                   then

                        begin
                        i:=1;
          ausgabeliste.LoadFromFile('ausgabe.txt');

                ausgabefeld.Caption:=(ausgabeliste[0]);
                        if ausgabeliste.IndexOf(i) then
                ausgabefeld2.Caption:=(ausgabeliste[1]);

                      end
                else
                   ausgabefeld.Caption:='                Keine ausgabe.txt vorhanden';

mkinzler 25. Mai 2008 10:56

Re: liste.IndexOf?
 
Der Index beginnt bei 0

Jiro 25. Mai 2008 10:59

Re: liste.IndexOf?
 
Ja, aber wenn eine 2. Zeile da ist (also indexof (1)), dann soll die auch angezeigt werden.

mkinzler 25. Mai 2008 11:01

Re: liste.IndexOf?
 
Zitat:

Ich habe ein ausgabe programm geschrieben, aber wenn in der ausgabe.txt nur eine Zeile drin ist, steht als exception Index überschreitet das Maximum.
Ähem. Wenn eine Dateu nur eine Zeile hat, gibt es keine 2.Zeile.

Jiro 25. Mai 2008 11:02

Re: liste.IndexOf?
 
Ja, aber wenn eine Zeile in der Datei ist, soll eine Zeile angezeigt werden, wenn 2 Zeilen drin sind 2

DeddyH 25. Mai 2008 11:02

Re: liste.IndexOf?
 
Zitat:

Delphi-Quellcode:
if ausgabeliste.IndexOf(i) then

Was willst Du mit dieser Zeile erreichen?

mkinzler 25. Mai 2008 11:03

Re: liste.IndexOf?
 
Dann muss i anfänglich 0 sein, da die erste Zeile den Index 0 hat.

Jiro 25. Mai 2008 11:04

Re: liste.IndexOf?
 
Ich möchte, dass die Exception weggeht, wenn nur eine Zeile in der datei drin ist. Wie kann ich rauskriegen ob es 2 Zeilen sind?

DeddyH 25. Mai 2008 11:05

Re: liste.IndexOf?
 
Ausgabeliste.Count gibt Dir die Anzahl der Zeilen zurück.

mkinzler 25. Mai 2008 11:07

Re: liste.IndexOf?
 
Mach ne Schleife über die Einträge

Delphi-Quellcode:
for i := 0 to ausgabeliste.Count-1 do

grenzgaenger 25. Mai 2008 11:07

Re: liste.IndexOf?
 
Zitat:

Zitat von Jiro
Ja, aber wenn eine Zeile in der Datei ist, soll eine Zeile angezeigt werden, wenn 2 Zeilen drin sind 2

und wenn nur eine zeile drin steht? willste dann auch zwei zeilen anzeigen?
einfach mit for xx in list do durchlaufen

btw: solltest du mal deinen quellcode ordentlich formatieren... da bekommt man ja augenkrebs

DeddyH 25. Mai 2008 11:08

Re: liste.IndexOf?
 
Schleife für 2 Labels? :wiejetzt:

Jiro 25. Mai 2008 11:09

Re: liste.IndexOf?
 
immer noch die exception (wenns so aussieht):
Delphi-Quellcode:
procedure Ttextausgabe.FormActivate(Sender: TObject);
var
ausgabeliste : TStrings;
   i:integer;
 begin
begin
ausgabeliste := TStringlist.Create;
   if fileexists ('ausgabe.txt')


                   then

                        begin

          ausgabeliste.LoadFromFile('ausgabe.txt');

                ausgabefeld.Caption:=(ausgabeliste[0]);
                   ausgabeliste.Count;
                      for i := 0 to ausgabeliste.Count-1 do
                ausgabefeld2.Caption:=(ausgabeliste[1]);

                      end
                else
                   ausgabefeld.Caption:='                Keine ausgabe.txt vorhanden';

DeddyH 25. Mai 2008 11:12

Re: liste.IndexOf?
 
Delphi-Quellcode:
if fileexists ('ausgabe.txt') then
  begin
    ausgabeliste := TStringlist.Create;
    try
      ausgabeliste.LoadFromFile('ausgabe.txt');
      if ausgabeliste.Count > 0 then
        ausgabefeld.Caption:=(ausgabeliste[0]);
      if ausgabeliste.Count > 1 then              
        ausgabefeld2.Caption:=(ausgabeliste[1]);
    finally
      ausgabeliste.Free;
    end;
  end
else
  ausgabefeld.Caption:='                Keine ausgabe.txt vorhanden';

mkinzler 25. Mai 2008 11:14

Re: liste.IndexOf?
 
Dir scheinen ehrlich jegliche Grundlagen zu fehlen.

Delphi-Quellcode:
if ausgabeliste.Count > 0 then ausgabefeld.Caption := ausgabeliste[0];
if ausgabeliste.Count > 1 then ausgabefeld2.Caption := ausgabeliste[1];
wohl die Lösung mit den Labels alles andere als geschickt ist.

Klaus01 25. Mai 2008 11:15

Re: liste.IndexOf?
 
Hallo Jiro,

was ist denn der Hintergrund des ganzen.

Die Schleifendurchläufe auf einem Label auszugeben finde
ich recht sinnfrei.

Wenn Du nur wissen willst wieviele Zeilen Deine StringListe hat
dann kannst Du das, wie schon gesagt, mit StringList.count machen.
Erfüllt die Anzahl der Zeilen nicht Deine Kriterien, musst Du
entsprechend reagieren.

Grüße
Klaus

Die Muhkuh 25. Mai 2008 11:15

Re: liste.IndexOf?
 
Verwende absolute Pfade. Du weißt nie, wo Dein Arbeitspfad gerade hinzeigt, wenn Du nur die Datei angibst.

Delphi-Referenz durchsuchenExtractFilePath, Delphi-Referenz durchsuchenApplication.Exename

Jiro 25. Mai 2008 11:16

Re: liste.IndexOf?
 
THX, klappt jetzt!

mkinzler 25. Mai 2008 11:17

Re: liste.IndexOf?
 
Trotzdem solltest du dich etwas mit den Grundlagen beschäftigen.

DeddyH 25. Mai 2008 11:20

Re: liste.IndexOf?
 
Zitat:

Zitat von mkinzler
Trotzdem solltest du dich etwas mit den Grundlagen beschäftigen.

Das kann nie schaden :lol:

mkinzler 25. Mai 2008 11:21

Re: liste.IndexOf?
 
Zitat:

Das kann nie schaden Laughing
Und tut hier auch Not. denn ich bezweifle, dass er die Lösung nun versteht oder warum seine nicht.

DeddyH 25. Mai 2008 11:24

Re: liste.IndexOf?
 
[OT] Das geht einigen anderen hier genauso [/OT]

Jiro 25. Mai 2008 11:28

Re: liste.IndexOf?
 
So, brauch nochmal Hilfe. Wenn jetzt keine .txt da ist, sonder eine jpg, wie kann ich das dann machen? also jpg anzeigen...

grenzgaenger 25. Mai 2008 11:29

Re: liste.IndexOf?
 
{bitte löschen, falscher thread}

mkinzler 25. Mai 2008 11:30

Re: liste.IndexOf?
 
Dann benötigst du TImage mit installiertem Jpeg-Filter.
http://www.delphi-treff.de/tutorials/grundlagen/

grenzgaenger 25. Mai 2008 11:30

Re: liste.IndexOf?
 
Zitat:

Zitat von Jiro
immer noch die exception (wenns so aussieht):
Delphi-Quellcode:
procedure Ttextausgabe.FormActivate(Sender: TObject);
var
ausgabeliste : TStrings;
   i:integer;
 begin
begin
ausgabeliste := TStringlist.Create;
   if fileexists ('ausgabe.txt')


                   then

                        begin

          ausgabeliste.LoadFromFile('ausgabe.txt');

                ausgabefeld.Caption:=(ausgabeliste[0]);
                   ausgabeliste.Count;
                      for i := 0 to ausgabeliste.Count-1 do
                ausgabefeld2.Caption:=(ausgabeliste[1]);

                      end
                else
                   ausgabefeld.Caption:='                Keine ausgabe.txt vorhanden';

ich hab dir das mal formatiert:

Delphi-Quellcode:
PROCEDURE Ttextausgabe.FormActivate(Sender: TObject);
VAR
  ausgabeliste: TStrings;
  i: integer;
BEGIN
  BEGIN
    ausgabeliste := TStringList.Create;
    IF fileexists('ausgabe.txt') THEN
    BEGIN

      ausgabeliste.LoadFromFile('ausgabe.txt');

      ausgabefeld.Caption := (ausgabeliste[0]);
      ausgabeliste.Count;
      FOR i := 0 TO ausgabeliste.Count - 1 DO
        ausgabefeld2.Caption := (ausgabeliste[1]);

    END
    ELSE
      ausgabefeld.Caption := '                Keine ausgabe.txt vorhanden';

  END;
END;
siehst du den unterschied?


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