AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

LoadFileFrom - Problem

Offene Frage von "DeddyH"
Ein Thema von darky95 · begonnen am 7. Okt 2013 · letzter Beitrag vom 8. Okt 2013
Antwort Antwort
darky95

Registriert seit: 7. Okt 2013
11 Beiträge
 
#1

LoadFileFrom - Problem

  Alt 7. Okt 2013, 20:50
Delphi-Version: 5
Hi Leute, hab mich extra mal schnell angemeldet.. habe folgendes Problem:

Ich (totaler Anfänger) schreibe gerade mit Lazarus an einem Programm zur Mitgliederverwaltung für unseren Verein.
Wenn ich die geforderten Daten eingebe und speichere, erstellt er die Datei so:

Vorname: Hans
Nachname: Schuster
Mitglied seit: 1.9.2013
...usw

wenn ich die eingaben laden will, kommen die daten inklusive dem "vorname: " in das Eingabefeld zurück.
ausserdem bekomme ich die Fehlermeldung: "List index(13) out of bounds" .. damit kann ich garnix anfangen..

Hier der Quellcode für das Vereinssystem:

Code:

unit P_vereinssystem;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, PrintersDlgs, Forms, Controls, Graphics, Dialogs,
  ComCtrls, StdCtrls, Buttons, ExtDlgs, Calendar, FileCtrl, EditBtn, CheckLst,
  ColorBox, Menus, ExtCtrls, ValEdit, MaskEdit, ActnList;

type

  { TForm1 }

  TForm1 = class(TForm)
    btnClose: TBitBtn;
    btnSave: TButton;
    btnMonE: TButton;
    btnQuartE: TButton;
    btnJE: TButton;
    btnMonK: TButton;
    btnQuartK: TButton;
    btnHJK: TButton;
    btnJK: TButton;
    btnLoad: TButton;
    edtHJE: TButton;
    edtoffVon: TEdit;
    edtoffBetr: TEdit;
    edtBeitragPro: TEdit;
    edtEmail: TEdit;
    edtTel: TEdit;
    edtOrt: TEdit;
    edtPLZ: TEdit;
    edtAdr: TEdit;
    edtMBTG: TEdit;
    edtMitglS: TEdit;
    edtAlterst: TEdit;
    edtNachn: TEdit;
    edtVorn: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    edtoffB: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    lblTurn: TLabel;
    lblEmail: TLabel;
    lblTel: TLabel;
    lblOrt: TLabel;
    lblPLZ: TLabel;
    lblAdr: TLabel;
    lblMBTG: TLabel;
    lblMitglS: TLabel;
    lblAltersst: TLabel;
    lblNNname: TLabel;
    lblVName: TLabel;
    mem12: TMemo;
    MemTurn: TMemo;
    StatusBar1: TStatusBar;
    procedure Action1Execute(Sender: TObject);
    procedure btnCloseClick(Sender: TObject);
    procedure btnJEClick(Sender: TObject);
    procedure btnJKClick(Sender: TObject);
    procedure btnLoadClick(Sender: TObject);
    procedure btnMonEClick(Sender: TObject);
    procedure btnMonKClick(Sender: TObject);
    procedure btnQuartEClick(Sender: TObject);
    procedure btnQuartKClick(Sender: TObject);
    procedure btnSaveClick(Sender: TObject);
    procedure btnHJKClick(Sender: TObject);
    procedure CheckGroup1Click(Sender: TObject);
    procedure chk1Change(Sender: TObject);
    procedure edtHJEClick(Sender: TObject);
    procedure edtoffBetrChange(Sender: TObject);
    procedure edtVornChange(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Image1Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure mem12Change(Sender: TObject);
    procedure MemTurnChange(Sender: TObject);
    procedure MenuItem1Click(Sender: TObject);
    procedure PageControl1Change(Sender: TObject);
    procedure ValueListEditor1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.MemTurnChange(Sender: TObject);
begin

end;

procedure TForm1.MenuItem1Click(Sender: TObject);
begin

end;

procedure TForm1.PageControl1Change(Sender: TObject);
begin

end;

procedure TForm1.ValueListEditor1Click(Sender: TObject);
begin

end;

procedure TForm1.edtVornChange(Sender: TObject);
begin

end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

procedure TForm1.Image1Click(Sender: TObject);
begin

end;

procedure TForm1.ListBox1Click(Sender: TObject);
begin

end;

procedure TForm1.mem12Change(Sender: TObject);
begin

end;

 procedure TForm1.Action1Execute(Sender: TObject);
 begin

 end;

procedure TForm1.btnCloseClick(Sender: TObject);
begin

end;

procedure TForm1.btnJEClick(Sender: TObject);

  var a,b,c : Single;
begin
  a := StrToFloat (edtoffBetr.Text) ;
  b := a+72;
  edtoffBetr.Text := FloatToStr(b);
end;

procedure TForm1.btnJKClick(Sender: TObject);

    var a,b : Single;
begin
  a := StrToFloat (edtoffBetr.Text) ;
  b := a+54;
  edtoffBetr.Text := FloatToStr(b);

end;

procedure TForm1.btnLoadClick(Sender: TObject);
    var
      List: TStrings;


    begin
          List:=TStringList.Create;
       try
        List.LoadfromFile('C:/Mitgliederverwaltung/Mitglieder/'+ edtVorn.Text + edtNachn.Text +'.MG');
         if List.Count>0 then
          edtVorn.Text:=List[0] ;
          edtNachn.Text:=List[1] ;
          edtAlterst.Text:=List[2];
          edtMitglS.Text:=List[3];
          edtMBTG.Text:=List[4];
          edtBeitragPro.Text:=List[13];
          edtoffBetr.Text:=List[14];
          edtoffVon.Text:=List[15];
          edtAdr.Text:=List[5];
          edtPLZ.Text:=List[6];
          edtOrt.Text:=List[7];
          edtTel.Text:=List[8];
          edtEmail.Text:=List[9];
          MemTurn.Text:=List[10];



       finally
          List.Free;
       end;
    end;

procedure TForm1.btnMonEClick(Sender: TObject);
 var a,b,c : Single;
begin
  a := StrToFloat (edtoffBetr.Text) ;
  b := a+6;
  edtoffBetr.Text := floatToStr(b);



end;

procedure TForm1.btnMonKClick(Sender: TObject);

  var a,b,c : Single;
begin
  a := StrToFloat (edtoffBetr.Text) ;

  b := a+4.50;
  edtoffBetr.Text := FloatToStr(b);
end;

procedure TForm1.btnQuartEClick(Sender: TObject);

  var a,b,c : Single;
begin
  a := StrToFloat (edtoffBetr.Text) ;
  b := a+18;
  edtoffBetr.Text := FloatToStr(b);
end;

procedure TForm1.btnQuartKClick(Sender: TObject);

  var a,b,c : Single;
begin
  a := StrToFloat (edtoffBetr.Text) ;
  b := a+13.50;
  edtoffBetr.Text := FloatToStr(b);
end;

 procedure TForm1.btnSaveClick(Sender: TObject);

  var
 List:TStrings;

begin
  List := TStringList.Create;

  try


    List.Add('Vorname:              '+edtVorn.Text);
    List.Add('Nachname:             '+edtNachn.Text);
    List.Add('Altersstufe:          '+edtAlterst.Text);
    List.Add('Mitglied seit:        '+edtMitglS.Text);
    List.Add('Mitgliedbeitrag:      '+edtMBTG.Text + '€' + '/' + edtBeitragPro.Text);
    List.Add('Adresse:              '+edtAdr.Text);
    List.Add('Postleihzahl:         '+edtPLZ.Text);
    List.Add('Ort:                  '+edtOrt.Text);
    List.Add('Telefon:              '+edtTel.Text);
    List.Add('EMail:                '+edtEmail.Text);
    List.Add('Turniere:             '+MemTurn.Text);
    List.Add('offene Beträge:       '+edtoffBetr.Text + '/' + edtoffVon.Text +'€');

    if not DirectoryExists('C:/Mitgliederverwaltung/Mitglieder/') then
  ForceDirectories('C:/Mitgliederverwaltung/Mitglieder/');

    List.SaveToFile('C:/Mitgliederverwaltung/Mitglieder/'+edtVorn.Text + edtNachn.Text +'.MG');
  finally
    List.Free;
  end;
end;



procedure TForm1.btnHJKClick(Sender: TObject);

     var a,b,c : Single;
begin
  a := StrToFloat (edtoffBetr.Text) ;
  b := a+27;
  edtoffBetr.Text := FloatToStr(b);


  end;









procedure TForm1.edtoffBetrChange(Sender: TObject);
begin

end;





procedure TForm1.CheckGroup1Click(Sender: TObject);
begin

end;

procedure TForm1.chk1Change(Sender: TObject);

begin

end;

procedure TForm1.edtHJEClick(Sender: TObject);

  var a,b,c : Single;
 begin
  a := StrToFloat (edtoffBetr.Text) ;
  b := a+36;
  edtoffBetr.Text := FloatToStr(b);
end;




end.
Ein Bild vom Formblatt ist im Anhang!



wäre echt dankbar für Hilfe,

MFG Darky
Miniaturansicht angehängter Grafiken
unbenannt22222.png  
  Mit Zitat antworten Zitat
Volker Z.

Registriert seit: 3. Dez 2012
Ort: Augsburg, Bayern, Süddeutschland
419 Beiträge
 
Delphi XE4 Ultimate
 
#2

AW: LoadFileFrom - Problem

  Alt 7. Okt 2013, 23:03
Hallo,

und herzlich Willkommen in der DP

Zitat:
Ich (totaler Anfänger)
Macht nix, wird sich ändern

Zitat:
wenn ich die eingaben laden will, kommen die daten inklusive dem "vorname: " in das Eingabefeld zurück.
Wenn es stört, dann lass die Labels beim Speichern eben weg; oder: Du kopierst nur den relevanten Teil der Information in das entsprechende Edit (Stichwort Copy).

Zitat:
ausserdem bekomme ich die Fehlermeldung: "List index(13) out of bounds"
Es können nur so viele Einträge in Deiner StringList vorhanden sein, wie Zeilen in der entsprechenden Datei. Wenn Du beim Speichern Informationen zusammenziehst und diese in einer Zeile abspeicherst, dann können die Einzelinformationen natürlich beim späteren Einlesen nicht plötzlich an einer anderen Stelle (Zeile) vorliegen. Dein edtBeitragPro.Text:=List[13]; muss daher zwangsläufig fehlschlagen (diese Zeile und die nachfolgenden hast Du nie gespeichert).
Also: Wenn Du schon für jedes Mitglied eine eigene Textdatei anlegst, dann schreib die entsprechenden Daten jeweils in eine (definierte) Zeile, so kannst Du die Daten später auch wieder auslesen. Besser: Nutze für Dein Vorhaben eine Datenbank.

Gruß
Volker Zeller
  Mit Zitat antworten Zitat
CarlAshnikov

Registriert seit: 18. Feb 2011
Ort: Erfurt
108 Beiträge
 
Delphi XE5 Enterprise
 
#3

AW: LoadFileFrom - Problem

  Alt 8. Okt 2013, 06:48
Im Prinzip muss du vor dem Laden jeder Zeile prüfen ob sie existiert. Bei Zeile "0" wird das ja schon gemacht. Dein Programm schreibt ja auch nur 12 Zeilen im Save wie soll es dann 16 Zeilen laden? Wieso lädst du Index 11 und 12 nicht?

Das Laden wird so sowieso nicht funktionieren wie erhofft. Um an die reinen Daten zu kommen musst du noch alles vor dem Doppelpunkt abschneiden und die Leerzeichen entfernen. Nimm dafür lieber eine Ini-Datei.

Diesmal war es recht offensichtlich, aber beim nächsten Problem bitte die Zeile des Fehlers mit angeben. Damit erhöht sich meist die Anzahl der Helfer und die Glaskugelsprüche werden weniger.
Sebastian
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.389 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: LoadFileFrom - Problem

  Alt 8. Okt 2013, 07:16
Und noch etwas ganz anderes: für Delphi-Codes bitte auch die Delphi-Tags benutzen (die Schaltfläche mit dem Helm im Beitragseditor), dann wird der Code auch passend hervorgehoben, was die Lesbarkeit erhöht.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf