AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Listenindex überschreitet Maximum(1)
Thema durchsuchen
Ansicht
Themen-Optionen

Listenindex überschreitet Maximum(1)

Ein Thema von DelphiUser1 · begonnen am 15. Sep 2012 · letzter Beitrag vom 19. Sep 2012
Antwort Antwort
Seite 1 von 2  1 2      
DelphiUser1

Registriert seit: 15. Sep 2012
56 Beiträge
 
#1

Listenindex überschreitet Maximum(1)

  Alt 15. Sep 2012, 12:59
Ich weiß, es wurde jetzt schon oft genug gefragt, aber ich bin noch ein Anfänger und konnte aus den anderen Beiträgen nicht so viel entnehmen. Was ist falsch daran?
ich versuche aus der textdatei die kontaktdaten auszulesen und als Labels auszugeben. Die Datei wird Info(Benutzername).txt genannt.

Delphi-Quellcode:
procedure TForm3.FormCreate(Sender: TObject);
var sdd: TStrings;
begin
if Form3.Visible then
if FileExists(path+'Info'+Form1.Edit1.Text+'.txt') then
begin
sdd:=TStringList.Create;
sdd.LoadFromFile(path+'Info'+Form1.Edit1.Text+'.txt');
Label3.Caption:=sdd.Strings[0];
Label4.Caption:=sdd.Strings[1];
Label4.Caption:=sdd.Strings[2];
Label6.Caption:=sdd.Strings[3];
end;
end;

Geändert von TBx (15. Sep 2012 um 13:50 Uhr) Grund: Delphi-Tags gesetzt, nächstes Mal bitte selber machen
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Listenindex überschreitet Maximum(1)

  Alt 15. Sep 2012, 13:40
Mal ein Versuch, damit Du etwas weiter kommst:

Delphi-Quellcode:
procedure TForm3.FormCreate(Sender: TObject);
var
  sdd: TStringList; // identischer Typ mit Instanz
  FN: String; // damit nicht zwei mal die gleiche "Berechnung" verwendet werden muss
begin
  if Form3.Visible then
  begin
    FN := path+'Info'+Form1.Edit1.Text+'.txt';
    if FileExists(FN) then
      begin
        sdd := TStringList.Create;
        sdd.LoadFromFile(FN); // es ist unsicher, wie viele Zeilen in der StringList stehen
        if ssd.Count > 0 then
          Label3.Caption:=sdd[0]
        else
          Label3.Caption:='';
        if ssd.Count > 1 then
          Label4.Caption:=sdd[1]
        else
          Label4.Caption:='';
        if ssd.Count > 2 then
          Label4.Caption:=sdd[2] // müsste Label5 heißen?
        else
          Label4.Caption:='';
        if ssd.Count > 3 then
          Label6.Caption:=sdd[3]
        else
          Label6.Caption:='';
        FreeAndNil(ssd);
      end;
  end;
end;
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Listenindex überschreitet Maximum(1)

  Alt 15. Sep 2012, 13:41
Fangen wir mal klein an:
Wir haben hier [code]- und sogar [delphi]-Tags, für die Quellcodes.
Delphi-Quellcode:
begin
  ShowMessage('Hallo');
end;
Warum gibst du dein erstellte TStringList (sdd) nicht wieder frei? (Speicherleck)



Und nun zum Problem:
Die Fehlermeldung sagt dir doch, was du falsch machst. (und der Debugger sagt dir sogar wo)

Du willst vermutlich auf eine Zeile (Index) der Stringliste zugreifen, welche es nicht gibt.

Laut Fehlermeldung ist eine Datei scheinbar nicht voll genug und entält nur eine Zeile (größter Index ist 0) und demnach kannst du da auch keine weiteren Zeilen (Index über 0) auslesen.



Und dann noch if Form3.Visible then .
Du bist doch schon in TForm3 drin, als solltest du auch nicht den Umweg über Form3 gehn (laß' das Form3. einfach weg)

[add]
Und es kann nichts schaden, wenn du etwas über Resourcenschutzblöcke lernst. (Try-Finally)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
DelphiUser1

Registriert seit: 15. Sep 2012
56 Beiträge
 
#4

AW: Listenindex überschreitet Maximum(1)

  Alt 15. Sep 2012, 15:07
Danke erst mal für die schnelle und ausführliche Antwort (:
Ich habe stahlis Code mal versucht zu compilieren, leider ereilte mich das selbe Schicksal wie vorher, selbe Fehlermeldung
Die StringList freizugeben habe ich wohl ganz vergessen, danke für die Anmerkung.
Das seltsame ist, das meine Text-Datei 6 Zeilen hat..
Hier der Code zum abspeichern der Datei, vielleicht hilft der weiter: (Treg ist eine eigene Klasse TForm und sl und sd speichern einmal das Kennwort ab und einmal die Kontaktinformationen)

procedure TReg.Button1Click(Sender: TObject);
var sl, sd: TStrings;
begin
sl := TStringlist.Create;
sl.add(Edit1.Text);
sl.savetofile(path+ Edit2.Text +'.txt');
sd :=TStringlist.Create;
sd.Add(Form1.Edit3.Text);
sd.Add(Form1.Edit4.Text);
sd.Add(Form1.MaskEdit1.Text);
sd.Add(Form1.Edit6.Text);
sd.Add(Form1.ComboBox3.Text);
sd.SaveToFile(path+'Info'+Edit2.Text+'.txt');
sd.free;
sl.free;
Showmessage ('Sie haben erfolgreich ein Konto angelegt');
myForm.close;
Form1.Close;
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#5

AW: Listenindex überschreitet Maximum(1)

  Alt 15. Sep 2012, 15:37
Hallo,

bitte ändere Deinen Quelltext mal entsprechend:
Delphi-Quellcode:
procedure TForm3.FormCreate(Sender: TObject);
var sdd: TStrings;
begin
  if Form3.Visible then
  begin
    if FileExists(path+'Info'+Form1.Edit1.Text+'.txt') then
    begin
      sdd:=TStringList.Create;
      sdd.LoadFromFile(path+'Info'+Form1.Edit1.Text+'.txt');

      ShowMessage(IntToStr(sdd.Count)); // <!-- Diese Ausgabe muss mindestens den Wert 4 ergeben!!!
      ShowMessage(sdd.text) // <!-- Werden hier alle von Dir erwarteten Zeilen angezeigt oder nur eine?

      Label3.Caption:=sdd.Strings[0];
      Label4.Caption:=sdd.Strings[1];
      Label4.Caption:=sdd.Strings[2];
      Label6.Caption:=sdd.Strings[3];
      sdd.free;
    end;
  end;
end;
Sind die Ausgaben entsprechend Deinen Erwartungen? Andernfalls prüfe mal das Erstellen der Datei, ob hier eventuell Informationen verlorengehen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Listenindex überschreitet Maximum(1)

  Alt 15. Sep 2012, 16:20
Wieso SchowMessage?

Man glaubt es kaum, aber der Debugger liefert genau die selben ergebnisse und das sogar schneller/einfacher.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

AW: Listenindex überschreitet Maximum(1)

  Alt 15. Sep 2012, 16:26
Wieso SchowMessage?

Man glaubt es kaum, aber der Debugger liefert genau die selben ergebnisse und das sogar schneller/einfacher.
Weil das einfacher ist, als den Umgang mit dem Debugger zu erklären.
  Mit Zitat antworten Zitat
DelphiUser1

Registriert seit: 15. Sep 2012
56 Beiträge
 
#8

AW: Listenindex überschreitet Maximum(1)

  Alt 15. Sep 2012, 16:38
Ich habe das Problem gelöst, danke an alle die geholfen haben (:
Ich baue gerade Facebook mit Delphi nach, falls ihr zufällig Ideen zur Umsetzung habt, würde ich mich über Anmerkungen freuen
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#9

AW: Listenindex überschreitet Maximum(1)

  Alt 15. Sep 2012, 17:04
Ich baue gerade Facebook mit Delphi nach
Lol und ich baue gerade meinen eigenen Learjet auf.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#10

AW: Listenindex überschreitet Maximum(1)

  Alt 15. Sep 2012, 18:04
Ich baue gerade Facebook mit Delphi nach, falls ihr zufällig Ideen zur Umsetzung habt, würde ich mich über Anmerkungen freuen
Viel Glück mit den Milliarden, aber wann du an die Börse gehst, ruf mich bitte nicht an
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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 17:41 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