AGB  ·  Datenschutz  ·  Impressum  







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

Adressbuch, aber...

Offene Frage von "Wessiiii"
Ein Thema von Wessiiii · begonnen am 3. Apr 2009 · letzter Beitrag vom 6. Apr 2009
 
Wessiiii

Registriert seit: 3. Apr 2009
Ort: Nalbach
14 Beiträge
 
Delphi 6 Personal
 
#1

Adressbuch, aber...

  Alt 3. Apr 2009, 17:55
Hallo,

ich muss für eine Bewerbung ein Adressbuch entwickeln.
Soweit auch ganz ok, nur hab ich ein Problem:

Er gibt mir immer den Fehler EStackOverflow zurück.
Das passiert immer, wenn

- Er in die auskommentierte for Schleife in Unit1 geht und dort auf den ersten Befehl trifft
- oder wenn halt die for schleife auskommentiert bleibt, beim end; von TForm1.Create

Warum?
Hab schon versucht den Stack größer zu stellen, aber nix.

Außerdem würde ich gerne, wenn man im SG eine Zelle auswählt, dass etwas passiert (siehe TForm1.SG_KONTAKTESelectCell). Dazu möchte ich den Inhalt den Arrays "Kontakte[i]" mit dem der Zelle vergleichen, wie geht das?

Hiermal der Code:

Code:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    GB_KONTAKTE: TGroupBox;
    LB_SUCHEN: TLabel;
    ED_SUCHEN: TEdit;
    SG_KONTAKTE: TStringGrid;
    GB_DETAILS: TGroupBox;
    LB_VORNAME: TLabel;
    LB_NACHNAME: TLabel;
    LB_GEB: TLabel;
    LB_TELE_PRIV: TLabel;
    LB_TELE_DIENST: TLabel;
    LB_HANDY: TLabel;
    LB_EMAIL: TLabel;
    ED_VORNAME: TEdit;
    ED_NACHNAME: TEdit;
    ED_GEB: TEdit;
    ED_TELE_PRIV: TEdit;
    ED_TELE_DIENST: TEdit;
    ED_HANDY: TEdit;
    ED_EMAIL: TEdit;
    GB_BEARBEITEN: TGroupBox;
    BT_NEU: TButton;
    BT_BEARBEITEN: TButton;
    BT_LOESCHEN: TButton;
    BT_EXTRA: TButton;
    procedure FormCreate(Sender: TObject);
    procedure BT_NEUClick(Sender: TObject);
    procedure SG_KONTAKTESelectCell(Sender: TObject; ACol, ARow: Integer;
      var CanSelect: Boolean);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  datei: file of TKontakt;
  zz: string;
  Kontakte: array of TKontakt;
  i: integer;
  pfad: textfile;
  pfad_string: string;

implementation

uses Unit3;


{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
        i := 0;

        SG_KONTAKTE.Cells[0, 0] := 'Nachname';
        SG_KONTAKTE.Cells[1, 0] := 'Vorname';

        if (SG_KONTAKTE.Cells[0, 1] = '') AND (SG_KONTAKTE.Cells[1, 1] = '') then
                begin
                LB_SUCHEN.Enabled := false;
                ED_SUCHEN.Enabled := false;
                end;

     try
        AssignFile(pfad, 'C:\pfad.txt');
        Reset(pfad);
        ReadLn(pfad, pfad_string);
        CloseFile(pfad);

        AssignFile(datei, pfad_string);
        Reset(datei);
        While (eof(datei)=false) do
                begin
                i := i + 1;
                SetLength(Kontakte, i);
                Read(datei, Kontakte[i]);
                end;
        {for i:=0 to High(kontakte) do
                begin
                SG_KONTAKTE.Cells[0, i+1] := Kontakte[i].Nachname;
                SG_KONTAKTE.Cells[1, i+1] := Kontakte[i].Vorname;
                end;}
        CloseFile(datei);
     except
        MessageDlg('Keine Kontakte gefunden', mtError, [mbOK], 0);
     end;
end;


procedure TForm1.BT_NEUClick(Sender: TObject);
begin
        Form3.Visible := True;
end;

procedure TForm1.SG_KONTAKTESelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
        for i:=0 to High(Kontakte) do
                begin
                if Kontakte[i].Vorname OR Kontakte[i].Nachname =
end;

end.
Code:
unit Unit2;

interface

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

type
        TKontakt = record
                Vorname: String[50];
                Nachname: String[50];
                Geb_datum: String[10];
                Telefon_p: String[20];
                Telefon_d: String[20];
                Mobil: String[15];
                EMail: String[50];
        end;


implementation

end.
Code:
unit Unit3;

interface

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

type
  TForm3 = class(TForm)
    GB_DETAILS: TGroupBox;
    LB_VORNAME: TLabel;
    LB_NACHNAME: TLabel;
    LB_GEB: TLabel;
    LB_TELE_PRIV: TLabel;
    LB_TELE_DIENST: TLabel;
    LB_HANDY: TLabel;
    LB_EMAIL: TLabel;
    ED_VORNAME_NEU: TEdit;
    ED_NACHNAME_NEU: TEdit;
    ED_GEB_NEU: TEdit;
    ED_TELE_PRIV_NEU: TEdit;
    ED_TELE_DIENST_NEU: TEdit;
    ED_HANDY_NEU: TEdit;
    ED_EMAIL_NEU: TEdit;
    BT_SPEICHERN_NEU: TButton;
    BT_SCHLIESSEN_NEU: TButton;
    SD_SPEICHERN: TSaveDialog;
    procedure BT_SCHLIESSEN_NEUClick(Sender: TObject);
    procedure BT_SPEICHERN_NEUClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form3: TForm3;

implementation


{$R *.dfm}

procedure TForm3.BT_SCHLIESSEN_NEUClick(Sender: TObject);
begin
        Close;
end;

procedure TForm3.BT_SPEICHERN_NEUClick(Sender: TObject);
var    i: integer;
begin
        if SD_SPEICHERN.Execute then
                begin
                  SetLength(Kontakte, (length(kontakte)+1));
                  Kontakte[High(Kontakte)].Vorname := ED_VORNAME_NEU.Text;
                  Kontakte[High(Kontakte)].Nachname := ED_NACHNAME_NEU.Text;
                  Kontakte[High(Kontakte)].Geb_datum := ED_GEB_NEU.Text;
                  Kontakte[High(Kontakte)].Telefon_p := ED_TELE_PRIV_NEU.Text;
                  Kontakte[High(Kontakte)].Telefon_d := ED_TELE_DIENST_NEU.Text;
                  Kontakte[High(Kontakte)].Mobil := ED_HANDY_NEU.Text;
                  Kontakte[High(Kontakte)].EMail := ED_EMAIL_NEU.Text;
                  try
                        AssignFile(datei, SD_SPEICHERN.FileName);
                        ReWrite(datei);
                        for i:=0 to High(Kontakte) do
                                begin
                                Write(datei, Kontakte[i]);
                                end;
                        AssignFile(pfad,'C:\pfad.txt' );
                        ReWrite(pfad);
                        WriteLn(pfad, SD_SPEICHERN.FileName);
                        CloseFile(pfad);
                  except
                        MessageDlg('Fehler beim schreiben der Datei', mtError, [mbOK], 0);
                  end;
                  end;


end;

end.
Vielen Dank schonmal
Marius Kleber
  Mit Zitat antworten Zitat
 


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 02:54 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 by Thomas Breitkreuz