![]() |
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'; |
Re: liste.IndexOf?
Der Index beginnt bei 0
|
Re: liste.IndexOf?
Ja, aber wenn eine 2. Zeile da ist (also indexof (1)), dann soll die auch angezeigt werden.
|
Re: liste.IndexOf?
Zitat:
|
Re: liste.IndexOf?
Ja, aber wenn eine Zeile in der Datei ist, soll eine Zeile angezeigt werden, wenn 2 Zeilen drin sind 2
|
Re: liste.IndexOf?
Zitat:
|
Re: liste.IndexOf?
Dann muss i anfänglich 0 sein, da die erste Zeile den Index 0 hat.
|
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?
|
Re: liste.IndexOf?
Ausgabeliste.Count gibt Dir die Anzahl der Zeilen zurück.
|
Re: liste.IndexOf?
Mach ne Schleife über die Einträge
Delphi-Quellcode:
for i := 0 to ausgabeliste.Count-1 do
|
Re: liste.IndexOf?
Zitat:
einfach mit for xx in list do durchlaufen btw: solltest du mal deinen quellcode ordentlich formatieren... da bekommt man ja augenkrebs |
Re: liste.IndexOf?
Schleife für 2 Labels? :wiejetzt:
|
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'; |
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'; |
Re: liste.IndexOf?
Dir scheinen ehrlich jegliche Grundlagen zu fehlen.
Delphi-Quellcode:
wohl die Lösung mit den Labels alles andere als geschickt ist.
if ausgabeliste.Count > 0 then ausgabefeld.Caption := ausgabeliste[0];
if ausgabeliste.Count > 1 then ausgabefeld2.Caption := ausgabeliste[1]; |
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 |
Re: liste.IndexOf?
Verwende absolute Pfade. Du weißt nie, wo Dein Arbeitspfad gerade hinzeigt, wenn Du nur die Datei angibst.
![]() ![]() |
Re: liste.IndexOf?
THX, klappt jetzt!
|
Re: liste.IndexOf?
Trotzdem solltest du dich etwas mit den Grundlagen beschäftigen.
|
Re: liste.IndexOf?
Zitat:
|
Re: liste.IndexOf?
Zitat:
|
Re: liste.IndexOf?
[OT] Das geht einigen anderen hier genauso [/OT]
|
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...
|
Re: liste.IndexOf?
{bitte löschen, falscher thread}
|
Re: liste.IndexOf?
Dann benötigst du TImage mit installiertem Jpeg-Filter.
![]() |
Re: liste.IndexOf?
Zitat:
Delphi-Quellcode:
siehst du den unterschied?
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; |
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