AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ListView und Textdatei

Ein Thema von MaM · begonnen am 6. Sep 2005 · letzter Beitrag vom 12. Sep 2005
Antwort Antwort
Seite 2 von 2     12   
MaM

Registriert seit: 21. Jul 2005
19 Beiträge
 
#11

Re: ListView und Textdatei

  Alt 7. Sep 2005, 13:33
So, die Fehlermeldung konnte ich abschalten. Nur habe ich jetzt das Problem, dass die Werte nicht mehr in die Textdatei geschrieben werden.

Code:
Delphi-Quellcode:
unit Kundenhinzufuegen;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm_Kundenhinzufuegen = class(TForm)
    L_KdNr: TLabel;
    GB_Kundendaten: TGroupBox;
    E_Firma: TEdit;
    E_Nachname: TEdit;
    L_Firma: TLabel;
    L_Nachname: TLabel;
    L_Vorname: TLabel;
    GB_Anschrift: TGroupBox;
    L_Strasse: TLabel;
    L_Plz: TLabel;
    L_Ort: TLabel;
    E_Strasse: TEdit;
    E_Plz: TEdit;
    E_Vorname: TEdit;
    E_Ort: TEdit;
    L_Land: TLabel;
    GB_Kontakt: TGroupBox;
    L_Telefon: TLabel;
    L_Fax: TLabel;
    L_Mobiltelefon: TLabel;
    L_eMail: TLabel;
    E_Telefon: TEdit;
    E_Fax: TEdit;
    E_Mobiltelefon: TEdit;
    E_eMail: TEdit;
    GroupBox1: TGroupBox;
    M_Ansprechpartner: TMemo;
    CB_Land: TComboBox;
    E_KdNr: TEdit;
    GroupBox2: TGroupBox;
    L_Zustaendigkeit: TLabel;
    L_Auslieferungsdatum: TLabel;
    E_Zustaendigkeit: TEdit;
    E_Auslieferungsdatum: TEdit;
    B_Hinzufuegen: TButton;
    B_Abbrechen: TButton;
    Label1: TLabel;
    E_Planungsende: TEdit;
    procedure B_HinzufuegenClick(slDaten: TStringList);
    procedure FormCreate(slDaten: TStringList);
    procedure B_AbbrechenClick(Sender: TObject);
    procedure FormDestroy(slDaten: TStringList);
  private
    function NeueZeile: string;
.
.
.

function TForm_Kundenhinzufuegen.NeueZeile: string;
var
  sl: TStringList;
begin
  sl := TStringList.Create;
  sl.Add(E_Firma.Text);
  sl.Add(E_Nachname.Text);
  sl.Add(E_Vorname.Text);
  sl.Add(E_Strasse.Text);
  sl.Add(E_Plz.Text);
  sl.Add(E_Ort.Text);
  sl.Add(CB_Land.Text);
  sl.Add(E_Telefon.Text);
  sl.Add(E_Fax.Text);
  sl.Add(E_Mobiltelefon.Text);
  sl.Add(E_eMail.Text);
  sl.Add(E_Zustaendigkeit.Text);
  sl.Add(E_Auslieferungsdatum.Text);
  sl.Add(E_Planungsende.Text);
  sl.Add(M_Ansprechpartner.Text);
  sl.Add(E_Firma.Text);
  Result := sl.CommaText;
  sl.Free;
end;


procedure TForm_Kundenhinzufuegen.B_HinzufuegenClick(slDaten: TStringList);
begin
  slDaten.Add(NeueZeile);
end;

procedure TForm_Kundenhinzufuegen.FormCreate(slDaten: TStringList);
begin
  slDaten := TStringList.Create;
  slDaten.LoadFromFile(ExtractFilePath(Application.ExeName)+'data\kunden.txt');
end;

procedure TForm_Kundenhinzufuegen.B_AbbrechenClick(Sender: TObject);
begin
  Close;
end;

procedure TForm_Kundenhinzufuegen.FormDestroy(slDaten: TStringList);
begin
  slDaten.SaveToFile(ExtractFilePath(Application.ExeName)+'data\kunden.txt');
  slDaten.Free;
end;
Gibt es ggf. noch Verbesserungsvorschläge zu dem Code?



MaM
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#12

Re: ListView und Textdatei

  Alt 7. Sep 2005, 13:53
Hai MaM,

ich glaube Du hast da ein Verständniss problem
Du erzeugst für jede deiner Methoden eine lokale Version slData deiner TStringList.
Damit ist diese natürlich lehr wenn Du sie im OnDestroy speicherst. Du brauchst also eine Instanz von TStringList welche zur gesamten Laufzeit des Programmes vorhanden ist.

hier einmal ein Beispiel:
Delphi-Quellcode:
type
  TForm_Kundenhinzufuegen = class(TForm)
    B_Hinzufuegen: TButton;
    procedure B_HinzufuegenClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    slDaten : TStringList; // Die "globale" Instanz
    function NeueZeile : string;
  public
    { Public-Deklarationen }

  end;

implementation

{$R *.dfm}

function TForm_Kundenhinzufuegen.NeueZeile: string;
var
  sl: TStringList;
begin
// .
// So wie Du sie hast.
// .
end;

procedure TForm_Kundenhinzufuegen.FormCreate(Sender: TObject);
begin
  slDaten := TStringList.Create;
  slDaten.LoadFromFile(ExtractFilePath(Application.ExeName)+'data\kunden.txt');
end;

procedure TForm_Kundenhinzufuegen.FormDestroy(Sender: TObject);
begin
  slDaten.SaveToFile(ExtractFilePath(Application.ExeName)+'data\kunden.txt');
  slDaten.Free;
end;

procedure TForm_Kundenhinzufuegen.B_HinzufuegenClick(Sender: TObject);
begin
  slDaten.Add(NeueZeile);
end;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
MaM

Registriert seit: 21. Jul 2005
19 Beiträge
 
#13

Re: ListView und Textdatei

  Alt 7. Sep 2005, 14:21
Leider schreibt er dennoch nichts in die Datei.


Delphi-Quellcode:
type
  TForm_Kundenhinzufuegen = class(TForm)
.
.
.

  private
    { Private-Deklarationen }
    slDaten : TStringList; // Die "globale" Instanz
    function NeueZeile: string;

.
.
.

function TForm_Kundenhinzufuegen.NeueZeile: string;
var
  sl: TStringList;
begin
  sl := TStringList.Create;
  sl.Add(E_Firma.Text);
  sl.Add(E_Nachname.Text);
  sl.Add(E_Vorname.Text);
  sl.Add(E_Strasse.Text);
  sl.Add(E_Plz.Text);
  sl.Add(E_Ort.Text);
  sl.Add(CB_Land.Text);
  sl.Add(E_Telefon.Text);
  sl.Add(E_Fax.Text);
  sl.Add(E_Mobiltelefon.Text);
  sl.Add(E_eMail.Text);
  sl.Add(E_Zustaendigkeit.Text);
  sl.Add(E_Auslieferungsdatum.Text);
  sl.Add(E_Planungsende.Text);
  sl.Add(M_Ansprechpartner.Text);
  sl.Add(E_Firma.Text);
  Result := sl.CommaText;
  sl.Free;
end;


procedure TForm_Kundenhinzufuegen.FormCreate(Sender: TObject);
begin
  slDaten := TStringList.Create;
  slDaten.LoadFromFile(ExtractFilePath(Application.ExeName)+'data\kunden.txt');
end;

procedure TForm_Kundenhinzufuegen.FormDestroy(Sender: TObject);
begin
  slDaten.SaveToFile(ExtractFilePath(Application.ExeName)+'data\kunden.txt');
  slDaten.Free;
end;

procedure TForm_Kundenhinzufuegen.B_HinzufuegenClick(Sender: TObject);
begin
  slDaten.Add(NeueZeile);
end;

procedure TForm_Kundenhinzufuegen.B_AbbrechenClick(Sender: TObject);
begin
  Close;
end;

MaM
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#14

Re: ListView und Textdatei

  Alt 7. Sep 2005, 15:01
Zitat von MaM:
Leider schreibt er dennoch nichts in die Datei.
Ich habe es nicht getestet. Aber setze das slDaten.SaveToFile(ExtractFilePath(Application.Exe Name)+'data\kunden.txt'); einmal in das OnClose der Form und nicht in das OnDestroy.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
MaM

Registriert seit: 21. Jul 2005
19 Beiträge
 
#15

Re: ListView und Textdatei

  Alt 7. Sep 2005, 15:50
Nein, auch das hat nicht funktioniert.

Habe das ganze jetzt erstmal so umgebaut. Da ich Zugriffsfehlermeldungen bekommen hatte. Nachdem ich die Form geschlossen habe.

Delphi-Quellcode:
procedure TForm_Kundenhinzufuegen.B_HinzufuegenClick(Sender: TObject);
begin
  slDaten := TStringList.Create;
  slDaten.LoadFromFile(ExtractFilePath(Application.ExeName)+'data\kunden.txt');
  try
  slDaten.Add(NeueZeile);
  slDaten.SaveToFile(ExtractFilePath(Application.ExeName)+'data\kunden.txt');
  finally
  slDaten.Free;
end;
end;


MaM
  Mit Zitat antworten Zitat
MaM

Registriert seit: 21. Jul 2005
19 Beiträge
 
#16

Re: ListView und Textdatei

  Alt 12. Sep 2005, 15:50
*schieb*



MaM
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#17

Re: ListView und Textdatei

  Alt 12. Sep 2005, 21:11
Hi MaM,

überlege doch mal mit: Für die Pflege eines Kundenstammes hast du normalerweise eine MainForm, auf der alle Kunden visualisiert werden (ListView?) und einen KundenDialog, auf dem die Detailinformationen zu einem Kunden erfasst oder bearbeitet werden können. Außerdem brauchst du so etwas wie ein Datenmodul - eine normale Unit ist OK, solange du mit der Speicherung deiner Kundendaten in einer Textdatei experimentierst.

Die StringList, mit der du die Kundendaten im Hauptspeicher verwaltest, gehört dann in dieses Datenmodul, damit von der MainForm und vom KundenDialog darauf zugegriffen werden kann. Kriegst du das hin?

Grüße vom marabu
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 01:37 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