Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Adressbuch mit Stringgrid. (https://www.delphipraxis.net/186130-adressbuch-mit-stringgrid.html)

GroZ 6. Aug 2015 09:46

Delphi-Version: 7

Adressbuch mit Stringgrid.
 
Hi,
Ich bin gerade dabei ein kleines Adressbuch zu programmieren.
Da ich aber nicht so bewandert bin mit Delphi wollte ich mal fragen mit welchem Code ich ein Stringgrid befüllen kann.
Ich hab 4 Edits(Name, Alter, Wohnort, Tel) und diese sollen hintereinander in das Stringgrid.
Dann halt darunter.

:coder:

bcvs 6. Aug 2015 10:01

AW: Adressbuch mit Stringgrid.
 
Schau dir mal die Eigenschaft Cells des Stringgrid an.

GroZ 6. Aug 2015 10:05

AW: Adressbuch mit Stringgrid.
 
Also wenn ich das richtig verstanden habe kann ich in die Werte da meine Variablen einsetzen. Bloß das jedesmal neuschreiben würde ja ewig dauern. Mit schleifen kenn ich mich jedoch nicht gut aus. könnt ihr mir ein beispiel einer schleife senden? oder einen link?

BUG 6. Aug 2015 10:13

AW: Adressbuch mit Stringgrid.
 
Schön, dass du ein Projekt gefunden hast :thumb:


Zitat:

Zitat von GroZ (Beitrag 1311221)
Bloß das jedesmal neuschreiben würde ja ewig dauern.

Was meinst du damit?

Zitat:

Zitat von GroZ (Beitrag 1311221)
könnt ihr mir ein beispiel einer schleife senden?

Delphi-Quellcode:
while not understood(loops) do
  google.search('delphi schleifen');

GroZ 6. Aug 2015 10:16

AW: Adressbuch mit Stringgrid.
 
Na das er jedesmal eine zeile weiter runter geht.
Ja aber ich kapiers nich so richtig xD

p80286 6. Aug 2015 10:21

AW: Adressbuch mit Stringgrid.
 
Jetzt ist der Moment gekommen, wo Du Dir bei Bleistift und Papier, Gedanken machen solltest, as Dein Programm eigentlich tun soll.
Zumindest Daten Erfassen, Daten Speichern und Daten Suchen sollte wohl dabei sein, Löschen ist vllt. auch recht hilfreich.
Dafür benötigst Du eine Oberfläche und ein paar Routinen fürs speichern suchen und löschen. Hab ich da noch etwas vergessen?

Gruß
K-H

GroZ 6. Aug 2015 10:24

AW: Adressbuch mit Stringgrid.
 
Das ist immer das erste was ich tue. Hab es jetzt hinbekommen das er den Namen schonmal in die richtige Spalte schreibt. Aber halt ohne Schleife. Die Überschriften hab ich ja auch noch nich

p80286 6. Aug 2015 10:26

AW: Adressbuch mit Stringgrid.
 
Zitat:

Zitat von GroZ (Beitrag 1311230)
Das ist immer das erste was ich tue. Hab es jetzt hinbekommen das er den Namen schonmal in die richtige Spalte schreibt. Aber halt ohne Schleife. Die Überschriften hab ich ja auch noch nich

Dann zeig uns doch mal Deinen Code, und nach Möglichkeit was Du erreichen willst.

Gruß
K-H

BUG 6. Aug 2015 10:28

AW: Adressbuch mit Stringgrid.
 
Das Stringgrid hat eine Eigenschaft, die die Anzahl der Zeilen (RowCount) angibt. Die zählst du um eins hoch und trägst in die neue Zeile die neuen Daten ein. Dafür brauchst du noch nicht mal eine Schleife :wink:

Sauberer wäre es allerdings, wenn du dir eine Funktion schreibst, die eine Liste von Adressen bekommt, das StringGrid komplett löscht und dann mit den Daten aus der Liste wieder neu befüllt. Dass ist zwar für das Hinzufügen nicht wirklich effizient, allerdings näher an dem, wie man es "richtig" machen würde. Dafür brauchst du dann auch tatsächlich eine Schleife.

GroZ 6. Aug 2015 10:28

AW: Adressbuch mit Stringgrid.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ok hier.

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Name: TLabeledEdit;
    Alter: TLabeledEdit;
    Wohnort: TLabeledEdit;
    Notiz: TLabeledEdit;
    HinzuBtn: TButton;
    LoeschenBtn: TButton;
    AdresseGrid: TStringGrid;
    BeendenBtn: TButton;
    MonthCalendar1: TMonthCalendar;
    Panel3: TPanel;
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    Speichern1: TMenuItem;
    Speichernunter1: TMenuItem;
    Nochnichtfertig1: TMenuItem;
    procedure BeendenBtnClick(Sender: TObject);
    procedure HinzuBtnClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Name, Wohnort: string;
  Alter, Tel: integer;

implementation

{$R *.dfm}

procedure TForm1.BeendenBtnClick(Sender: TObject);
begin
sleep(1000);
close;
end;

procedure TForm1.HinzuBtnClick(Sender: TObject);
begin
  AdresseGrid.Cells[1,1]:= Name.Text;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  AdresseGrid.Cells[0,1]:=
end;

end.
//edit hab jetzt ne schleife hinbekommen.

frankyboy1974 6. Aug 2015 10:50

AW: Adressbuch mit Stringgrid.
 
Hallo lieber Te,

falls ich an deinem Problem vorbei geantwortet habe, verzeihe mir dies!!

Wenn du etwas mehr als einmal ausführen möchtest, schreibst du eine Schleife.
Der Programmierer kennt nun drei (zwei) Arten von Schleifen.

Die Kopf-, die Fuss- und die (Zählschleife/Die Zählschleife ist ein Spezialfall der Kopfschleife),

Bei der Kopfschleife prüfst du erst, ob der Schleifenrumpf überhaupt durchlaufen wird. Bei der Fussschleife wird erst durchlaufen und dann wird geprüft, ob ein Zweites mal durchlaufen wird. Der Unterschied liegt also darin, dass eine Fussschleife zumindestens einmal durchlaufen wird.

hier ein Beispiel für eine Kopfgesteuerte Schleife

Delphi-Quellcode:
WHILE i <= 100 //Solange i<= 100 wird der Schleifenrumpf ausgeführt
begin
    Summe := Summe + i;
    i := i + 1;
end;
und hier für eine Fussgesteuerte Schleife
Delphi-Quellcode:
repeat
  ...
until Zahl >= 10; // Solange Zahl <10 wird diese Schleife ausgeführt
Bei einer Zählschleife (als Spezialfall für eine Kopfgesteuerte Schleife) würde das jetzt so aussehen,

Delphi-Quellcode:
for i := 0 to 4 do begin // Zähle von 0 bis 4 und tue irgendetwas
  Writeln(i);
end;

GroZ 6. Aug 2015 10:54

AW: Adressbuch mit Stringgrid.
 
So habe es jetzt schonmal hinbekommen die erste Zeile zu befüllen mit den Infos.
Hier mal mein quellcode:
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Name: TLabeledEdit;
    Alter: TLabeledEdit;
    Wohnort: TLabeledEdit;
    Tel: TLabeledEdit;
    HinzuBtn: TButton;
    LoeschenBtn: TButton;
    AdresseGrid: TStringGrid;
    BeendenBtn: TButton;
    MonthCalendar1: TMonthCalendar;
    Panel3: TPanel;
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    Speichern1: TMenuItem;
    Speichernunter1: TMenuItem;
    Nochnichtfertig1: TMenuItem;
    procedure BeendenBtnClick(Sender: TObject);
    procedure HinzuBtnClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Name, Wohnort: string;
  Alter, Tel: integer;

implementation

{$R *.dfm}

procedure TForm1.BeendenBtnClick(Sender: TObject);
begin
//sleep(1000);
close;
end;

procedure TForm1.HinzuBtnClick(Sender: TObject);
begin
  AdresseGrid.Cells[1,1]:= Name.Text;
  AdresseGrid.Cells[2,1]:= Alter.Text;
  AdresseGrid.Cells[3,1]:= Wohnort.Text;
  AdresseGrid.Cells[4,1]:= Tel.text;
end;

procedure TForm1.FormCreate(Sender: TObject);
var i : integer;

begin
  AdresseGrid.Cells[1,0]:= 'Name';
  AdresseGrid.Cells[2,0]:= 'Alter';
  AdresseGrid.Cells[3,0]:= 'Wohnort';
  AdresseGrid.Cells[4,0]:= 'Telefon';
    for i := 1 to 20 do
    begin
      AdresseGrid.Cells[0,i]:= IntToStr(i);
    end;
 
end;

end.

GroZ 6. Aug 2015 11:08

AW: Adressbuch mit Stringgrid.
 
Eine Frage. Muss ich das er ne neue Zeile anfängt wenn ich neue Kontaktdaten eingebe ne schleife einbauen?

Jumpy 6. Aug 2015 11:17

AW: Adressbuch mit Stringgrid.
 
Jain. Wenn du nur soviele Zeilen hast, wie du bisher Namen/Personen erfasst hast, dann musst du das Grid nur um eine Zeile erweitern und in diese Zelle schreiben.

Wenn das Grid aber schon 100 Zeilen oder so hat, von denen nur die ersten 5 befüllt sind, dann müsstest du in einer Schleife durch die Zeilen gehen, bis du die erste leere findest und da dann deine Werte reinschreiben.

Ich möchte dir aber auch den Einwand von BUG bezüglich saubererer Datenhaltung ans Herz legen.

GroZ 6. Aug 2015 11:27

AW: Adressbuch mit Stringgrid.
 
Ich habs hingekriegt das er den namen komplett bis runter schreibt also in jede Zeile vom Header "Namen" aber halt immer der gleiche...
Delphi-Quellcode:
procedure TForm1.HinzuBtnClick(Sender: TObject);
var i : integer;
begin
    for i := 1 to 20 do
    begin
      AdresseGrid.Cells[1,i] := Name.Text;
  AdresseGrid.Cells[1,i]:= Name.Text;
  AdresseGrid.Cells[2,i]:= Alter.Text;
  AdresseGrid.Cells[3,i]:= Wohnort.Text;
  AdresseGrid.Cells[4,i]:= Tel.text;
    end;
end;

p80286 6. Aug 2015 11:38

AW: Adressbuch mit Stringgrid.
 
Wenn Du nur einen Namen hast, den Du 20 mal schreibst, dann ist das zwangsläufig so.
Wenn Du das beherzigst was BUG geschrieben hat, dann hast Du ungefähr folgenden Ablauf
  1. Namen erfassen
  2. Inhalt des Namensfeld in Liste speichern
  3. vollständige Liste in StringGrid ausgeben
Beim letzten Punkt kannst Du dann Deine Kenntnisse über Schleifen einsetzen.
vorher solltest Du Dir aber Gedanken über das Abspeichern, ggf. in einer Datei, machen.

Gruß
K-H

Perlsau 6. Aug 2015 11:51

AW: Adressbuch mit Stringgrid.
 
@GroZ:

Offensichtlich fehlt es dir völlig an den grundlegendsten Kenntnissen der Programmierung mit Delphi. Das ist weder ein Vorwurf noch sonst irgendwie schlimm, denn schließlich haben wir alle einmal damit angefangen, in Pascal zu programmieren. Diesem Mangel kannst nur du selbst abhelfen, jedoch auf mehrere Arten. Die gebräuchlichste und erfolgversprechendste Möglichkeit besteht darin, einige Anfänger-Tutorials durchzuarbeiten, um so ein grundlegendes Verständnis dafür, wie Programme in Delphi aufgebaut sind, zu entwickeln. Als Einstieg empfehle ich stets die Grundlagen-Tutorials vom Delphi-Treff, da sie sehr einfach gehalten und daher leicht verständlich sind. Dort findest du auch weitere Tutorials zu spezielleren Themen.

Vor einiger Zeit hab ich ein Video-Tutorial für Anfänger zum Programmieren einer Adreßverwaltung erstellt, das in 5 Teilen bei YouTube zu finden ist. Im jeweiligen Text zu den Videos findest du auch einen Download-Link für den Quellcode.

Videotutorial Adressverwaltung Teil 1
Videotutorial Adressverwaltung Teil 2
Videotutorial Adressverwaltung Teil 3
Videotutorial Adressverwaltung Teil 4a
Videotutorial Adressverwaltung Teil 4b

In diesen Videos erkläre ich ausführlich, wie man als Anfänger eine Adreßverwaltung entwickelt. Ich denke, damit solltest du klarkommen und eine Weile beschäftigt sein.

GroZ 6. Aug 2015 12:12

AW: Adressbuch mit Stringgrid.
 
ok danke werde es mir mal anschauen :)

BUG 6. Aug 2015 12:20

AW: Adressbuch mit Stringgrid.
 
Zitat:

Zitat von p80286 (Beitrag 1311259)
vorher solltest Du Dir aber Gedanken über das Abspeichern, ggf. in einer Datei, machen.

Damit bist du imho schon einen Schritt zu weit. Der erste Gedanke sollte hier sein, wie die Daten im Programm repräsentiert werden. Ob die Daten dann gespeichert oder anderweitig ausgegeben werden, macht dann ja nicht so den Unterschied.

Die Gretchenfrage ist also: Sollen die Daten nur im Stringgrid* gehalten werden oder in einer Liste von Objekten**? :wink:

* Wenn es nur darum geht mit dem Stringgrid zu spielen ... vielleicht akzeptabel.
** In die Richtung gibt eine Menge spannendes Zeug zu lernen: Was sind Objekte? Wie verwalte ich meinen Speicher? Was für Datenstrukturen kann ich am besten für die Verwaltung der Daten benutzen?

GroZ 6. Aug 2015 12:25

AW: Adressbuch mit Stringgrid.
 
Ich wollte die Tabelle in einer .txt Datei speichern. In etwa nach diesem Code:
Delphi-Quellcode:
procedure SaveStringGridToFile(StringGrid: TStringGrid; const FileName: String);
var
  F: TStringList;
  i: Integer;
begin
  F := TStringList.Create;
  try
    F.Add(IntToStr(StringGrid.RowCount));
    F.Add(IntToStr(StringGrid.ColCount));
    for i := 0 to (StringGrid.RowCount - 1) do
      F.Add(StringGrid.Rows[i].CommaText);
    F.SaveToFile(FileName);
  finally
    F.Free;
  end;
end;
Das ist natürlich nur ein Beispiel. Was ich jedoch nicht weiß in welche Datei die Tabelle gespeichert werden soll. ist .txt möglich?

BUG 6. Aug 2015 12:33

AW: Adressbuch mit Stringgrid.
 
Zitat:

Zitat von GroZ (Beitrag 1311277)
ist .txt möglich?

Die Dateiendung ist nur ein Teil des Dateinamens: .txt ist genauso möglich wie .bin, .csv oder .adressen

GroZ 6. Aug 2015 12:55

AW: Adressbuch mit Stringgrid.
 
Naja ich wills erstmal normal hinkriegen ohne speichern reicht erstmal :)
Aber ich glaub ich habs grad kaputt gemacht haha
Delphi-Quellcode:
procedure TForm1.HinzuBtnClick(Sender: TObject);
var i, x : integer;
begin
  x := 1;
  i := x + 1;
  AdresseGrid.Cells[i,1]:= Name.Text;
  AdresseGrid.Cells[2,1]:= Alter.Text;
  AdresseGrid.Cells[3,1]:= Wohnort.Text;
  AdresseGrid.Cells[4,1]:= Tel.text;
end;
Jetzt geht Name nicht mehr. Wie kann ich ihm sagen das er immer 1Zeile nach unten geht?

Perlsau 6. Aug 2015 13:12

AW: Adressbuch mit Stringgrid.
 
Zitat:

Zitat von GroZ (Beitrag 1311287)
Jetzt geht Name nicht mehr. Wie kann ich ihm sagen das er immer 1Zeile nach unten geht?

"Jetzt geht Name nicht mehr" ist keine aussagekräftige Fehlermeldung. Oben wurde dir bereits empfohlen, einmal die Online-Hilfe zum Stringgrid etwas genauer zu studieren. Dort würdest du die Antwort unweigerlich finden. Solche und weitere Fragen werden dir ebenfalls in den oben vorgestellten Video-Tutorials beantwortet. Dort könntest du all das lernen, was du hier bereits gefragt hast, und zwar von Anfang an. Damit wäre das Problem, daß du die Antworten, die dir hier gegeben werden, (noch) nicht verstehst, beseitigt.

BUG 6. Aug 2015 13:30

AW: Adressbuch mit Stringgrid.
 
Zitat:

Zitat von Perlsau (Beitrag 1311292)
Solche und weitere Fragen werden dir in den oben vorgestellten Video-Tutorials beantwortet.

Die Produktionsqualität ist für Delphi-Tutorials auf Youtube schon erstaunlich gut, aber ich weiß nicht ob ich mehr als eine halbe Stunde am Stück aushalten würde. Das hat so seine Längen, ein etwas kürzer geschnittenes* Format wäre imho angenehmer.
Aber gut, das ist wohl etwas OT und es ist schön, das es überhaupt Material gibt :thumb:

* ~10-15min mit je einem einigermaßen griffigem Thema/Titel. Zum Beispiel muss man nicht zugucken, wie du durch deine Ordner navigierst.

GroZ 6. Aug 2015 14:28

AW: Adressbuch mit Stringgrid.
 
Habs hingekriegt! :thumb:

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Name: TLabeledEdit;
    Alter: TLabeledEdit;
    Wohnort: TLabeledEdit;
    Tel: TLabeledEdit;
    HinzuBtn: TButton;
    LoeschenBtn: TButton;
    AdresseGrid: TStringGrid;
    BeendenBtn: TButton;
    MonthCalendar1: TMonthCalendar;
    Panel3: TPanel;
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    Speichern1: TMenuItem;
    Speichernunter1: TMenuItem;
    Nochnichtfertig1: TMenuItem;
    Schlieen1: TMenuItem;
    procedure BeendenBtnClick(Sender: TObject);
    procedure HinzuBtnClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure LoeschenBtnClick(Sender: TObject);
    procedure Schlieen1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Name, Wohnort: string;
  Alter, Tel: integer;

implementation

{$R *.dfm}

procedure TForm1.BeendenBtnClick(Sender: TObject);
begin
//sleep(1000);
close;
end;

procedure TForm1.HinzuBtnClick(Sender: TObject);
var i : integer;
begin
  for i := 0 to AdresseGrid.RowCount-1 do            // Name
  begin
    if AdresseGrid.Cells[1, i] = '' then
    begin
      AdresseGrid.Cells[1, i] := Name.Text;
      break;
    end;
end;

begin
  for i := 0 to AdresseGrid.RowCount-1 do
  begin
    if AdresseGrid.Cells[2, i] = '' then            // Alter
    begin
      AdresseGrid.Cells[2, i] := Alter.Text;
      break;
    end;
end;

begin
  for i := 0 to AdresseGrid.RowCount-1 do
  begin
    if AdresseGrid.Cells[3, i] = '' then
    begin                                           // Wohnort
      AdresseGrid.Cells[3, i] := Wohnort.Text;
      break;
    end;
end;

begin
  for i := 0 to AdresseGrid.RowCount-1 do
  begin
    if AdresseGrid.Cells[4, i] = '' then            // Tel. Nummer
    begin
      AdresseGrid.Cells[4, i] := Tel.Text;
      break;
    end;

end;
end;
end;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var i : integer;

begin
  AdresseGrid.Refresh;
  AdresseGrid.ColWidths[0] := 25;
  AdresseGrid.Cells[1,0]:= 'Name';
  AdresseGrid.Cells[2,0]:= 'Alter';
  AdresseGrid.Cells[3,0]:= 'Wohnort';
  AdresseGrid.Cells[4,0]:= 'Telefon';
    for i := 1 to 20 do
    begin
      AdresseGrid.Cells[0,i]:= IntToStr(i);
    end;
end;

procedure TForm1.LoeschenBtnClick(Sender: TObject);
begin
  Name.Clear;
  Alter.Clear;
  Wohnort.Clear;
  Tel.Clear;
end;

procedure TForm1.Schlieen1Click(Sender: TObject);
begin
close;
end;

end.
Stufe 2: Speichern und Laden

Jumpy 6. Aug 2015 14:56

AW: Adressbuch mit Stringgrid.
 
Deine Hinzufügen Funktion ist nicht nur unperformant (da du die selbe Schleife mehrfach ausführst sondern auch gefährlich.
Hast du z.B. 4 Zeilen, aber in der 4. keine Alter angegeben, und fügst jetzt einen neuen Datensatz hinzu, dann werden Name, Ort und Tel in Zeile 5 geschrieben, Alter aber in Zeile 4, weil das die erste Zeile ist in der Spalte Alter leer ist. Besser wäre so:

Delphi-Quellcode:
procedure TForm1.HinzuBtnClick(Sender: TObject);
var CurrentRow:Integer
begin
  CurrentRow:=GetFirstEmptyRow
  AdresseGrid.Cells[1, CurrentRow] := Name.Text;
  AdresseGrid.Cells[2, CurrentRow] := Alter.Text;
  AdresseGrid.Cells[3, CurrentRow] := Wohnort.Text;
  AdresseGrid.Cells[4, CurrentRow] := Tel.Text;
end;

function TForm1.GetFirstEmptyRow:Integer;
begin
  Result:=0;
  for i := 1 to AdresseGrid.RowCount-1 do
    if AdresseGrid.Cells[1, i] = '' then
      begin    
      Result:=i;
      break;
      end;
  if Result=0 then
    begin
    // AdresseGrid.AddRow //oder wie auch immer man eine Zeile anfügt
    Result:=AdresseGrid.RowCount-1;
    end;
end;
Noch schöner aber wie gesagt, die eigentlichen Daten einer Person in einem Objekt/Record halten und alle diese Objekte/Records dann in einer (Objekt-)Liste/Array,...

GroZ 6. Aug 2015 15:03

AW: Adressbuch mit Stringgrid.
 
Naja das der Code sehr unvorteilhaft ist hab ich selber schon gemerkt. Aber man lernt ja mit der Zeit :P bin eig ganz zufrieden so wie es jetzt grade ist.
PS: Das Problem ist mir selber auch schon aufgefallen aber das kommt dann erst in Version 2.0 :D

Perlsau 6. Aug 2015 15:12

AW: Adressbuch mit Stringgrid.
 
Zitat:

Zitat von Jumpy (Beitrag 1311316)
Noch schöner aber wie gesagt, die eigentlichen Daten einer Person in einem Objekt/Record halten und alle diese Objekte/Records dann in einer (Objekt-)Liste/Array,...

Genau das erkläre ich ausführlich im Video-Tutorial: Arbeiten mit Records und typisierten Dateien, Ansicht in einem Stringgrid, hinzufügen, ändern und löschen von Adress-Datensätzen usw. Und wem das als Anfänger zu viel ist oder wer sich nicht für einen blutigen Anfänger hält oder nicht dafür gehalten werden will, dem genügen vermutlich auch die jeweiligen Quellcodes, die unterhalb der Videos verlinkt sind.

Leider kommt es wie hier sehr häufig vor, daß Anfänger weder Online-Hilfe noch Tutorials bemühen wollen, sondern glauben, durch einfaches Drauflosprogrammieren zum Ziel gelangen zu können. Letzteres ist meiner Erfahrung nach noch niemandem gelungen. In der Zeit, in der der TE sich hier vergeblich abmüht, die Antworten zu begreifen, um dann doch wieder irgendwas zu coden, das er nicht wirklich versteht, hätte er schon zwei oder drei Teile des 5teiligen Video-Tutorials durcharbeiten und den hilfsbereiten Usern nervliche Belastung ersparen können. Leider kenne ich dieses sture Verhalten auch von Kunden, die uralte Komponenten und Konzepte beibehalten wollen und nicht bereit sind, strukturelle Fehler ihrer Software zu beseitigen (kürzlich hatte ich einen, dessen Code knapp eine Million undokumentierte Codezeilen beinhaltet und beim Kompilieren hunderte von Hinweisen und Warnungen erzeugt, kein Witz) und dann rummeckern, wenn Änderungen, die sie nicht mehr selbst in der Lage sind zu bewältigen, viel Zeit und Geld in Anspruch nehmen. Da ist letzendlich jegliche Mühe vergeblich ... und am Ende wird man nicht mal bezahlt und muß auch noch einen Anwalt bemühen ...

BUG 6. Aug 2015 15:22

AW: Adressbuch mit Stringgrid.
 
Erst einmal mit den visuellen Komponenten herumzuspielen und ein paar schnelle Erfolge zu haben ist auch nicht so verkehrt :mrgreen:
Den Schrott den ich früher zusammenprogrammiert habe ... da wäre eine Adressverwaltung deutlich sinnvoller gewesen.

p80286 6. Aug 2015 15:27

AW: Adressbuch mit Stringgrid.
 
[OT]
Zitat:

Zitat von BUG (Beitrag 1311275)
Zitat:

Zitat von p80286 (Beitrag 1311259)
vorher solltest Du Dir aber Gedanken über das Abspeichern, ggf. in einer Datei, machen.

Damit bist du imho schon einen Schritt zu weit. Der erste Gedanke sollte hier sein, wie die Daten im Programm repräsentiert werden. Ob die Daten dann gespeichert oder anderweitig ausgegeben werden, macht dann ja nicht so den Unterschied.

Die Gretchenfrage ist also: Sollen die Daten nur im Stringgrid* gehalten werden oder in einer Liste von Objekten**? :wink:

* Wenn es nur darum geht mit dem Stringgrid zu spielen ... vielleicht akzeptabel.
** In die Richtung gibt eine Menge spannendes Zeug zu lernen: Was sind Objekte? Wie verwalte ich meinen Speicher? Was für Datenstrukturen kann ich am besten für die Verwaltung der Daten benutzen?

Bevor wir uns die Köpfe einschlagen, und den TE verwirren, mir erscheint es logischer die wie auch immer, erfassten Daten zunächst einmal auf einem Datenträger abzulegen und dann wieder einzulesen. [und sei es als String]
Die eigentlich wichtige Frage hast Du leider nur verschämt gestellt, wobei meiner Meinung nach, die Datenstruktur automatisch alles andere nach sich zieht, aber gut lassen wir das hier.

Gruß
K-H
Zitat:

Zitat von BUG (Beitrag 1311328)
Erst einmal mit den visuellen Komponenten herumzuspielen und ein paar schnelle Erfolge zu haben ist auch nicht so verkehrt :mrgreen:
Den Schrott den ich früher zusammenprogrammiert habe ... da wäre eine Adressverwaltung deutlich sinnvoller gewesen.

Jeder hat eine Vergangenheit :zwinker:

[/OT]

baumina 6. Aug 2015 15:38

AW: Adressbuch mit Stringgrid.
 
Mit viel Euphorie erstmal wild rumwurschteln, das muss und darf auch mal sein. Trockene Hilfetexte, Lehrbücher und Turtorials durchackern kommt zwangsläufig sowieso. Allerdings müssen wir glaub nicht alle bei den ersten Gehversuchen bis ins Detail dran teilnehmen. Wenns eine spezielle Frage gibt, wo du definitiv mit den o.g. trockenen Sachen nicht weiter kommst, helfen wir da sicher wieder gerne weiter.

Perlsau 6. Aug 2015 16:26

AW: Adressbuch mit Stringgrid.
 
Zitat:

Zitat von BUG (Beitrag 1311294)
Die Produktionsqualität ist für Delphi-Tutorials auf Youtube schon erstaunlich gut, ...

Immerhin, wenigstens etwas, wenn schon das Tutorial nix taugt, nicht wahr :?

Zitat:

Zitat von BUG (Beitrag 1311294)
... aber ich weiß nicht ob ich mehr als eine halbe Stunde am Stück aushalten würde.

Verlangt das denn jemand von dir? Also mir ist das egal, wie lange du durchhalten würdest oder ob du vorspulst oder gleich mit Teil 2 beginnst, weil du das in Teil 1 bereits alles weißt. Achso, ich vergaß, ich hab die Tutorials ja extra für dich gemacht, nicht wahr :?

Zitat:

Zitat von BUG (Beitrag 1311294)
Das hat so seine Längen, ein etwas kürzer geschnittenes Format wäre imho angenehmer.

Es steht dir frei, dir die Videos herunterzuladen und zu kürzen, wie es dir gefällt. Es steht dir auch frei, Kopien dieser Videos unter Angabe der Quelle wieder bei Youtube zu veröffentlichen. Ebenso steht es dir frei, selbst Video-Tutorials zu erstellen und bei Youtube hochzuladen. Oder glaubst du wirklich, mich interessiert das alles? Oder erwartest du etwa, daß ich die Videos jetzt extra für dich noch einmal überarbeite? Mach mal selber eins, dann weißt du, wovon du redest.

Zitat:

Zitat von BUG (Beitrag 1311294)
Aber gut, das ist wohl etwas OT und es ist schön, das es überhaupt Material gibt

Ist es in der Tat. Ich habe die Video-Tutorials nicht hier angeführt, um sie von dir durch den Kakao ziehen zu lassen, sondern um dem TE sowie anderen Anfängern einen Einstieg anzubieten. Du jedoch schreckst die Leute davon ab, aus welchen Gründen auch immer, ich will deine Motive nicht wirklich wissen.

Zitat:

Zitat von BUG (Beitrag 1311294)
10-15min mit je einem einigermaßen griffigem Thema/Titel. Zum Beispiel muss man nicht zugucken, wie du durch deine Ordner navigierst.

Und du weißt natürlich ganz genau, welchen Kenntnisstand ich beim Rezipienten voraussetzen darf, nicht wahr :?
Es steht dir frei, vorzuspulen, wenn du dich langweilst. Noch einmal: ich habe die Videos nicht deinen speziellen Bedürfnissen, die mir zum Zeitpunkt der Aufnahme übrigens vollkommen unbekannt waren, entsprechend erstellt. Falls ich weitere Videos aufnehme, werde ich das weiterhin so machen, wie ich es für richtig halte (außer du zahlst dafür, dann strenge ich mich auch etwas an und lasse mir von dir vorschreiben, wie ich Videos zu gestalten habe). Ich bin kein Profi und es kommt mir vor allem darauf an, den gewünschten Inhalt rüberzubringen und nicht, ein hollywoodreifes Filmdebut zu geben. Es sind Amateurvideos!

BUG 6. Aug 2015 17:11

AW: Adressbuch mit Stringgrid.
 
Zitat:

Zitat von Perlsau (Beitrag 1311338)
deine Motive

Ich wollte nur ein wenig Feedback von jemand geben, der deutlich zu viel Zeit auf Youtube verbringt; manchmal kann ein anderer Blickwinkel ja nicht schaden.
Videozeug/Audiozeug ist schwer, viel Arbeit und ich weiß wie schrecklich mein Material ist/wäre; und wie gesagt, das hier zählt definitiv zu den besseren Videos in der Sparte.

Zum Inhalt wollte ich kein Feedback geben, dafür habe ich deutlich zu wenig davon nachvollzogen.



Ich bitte um Entschuldigung, wenn das zu abwertend rübergekommen ist :|

Perlsau 6. Aug 2015 17:53

AW: Adressbuch mit Stringgrid.
 
Zitat:

Zitat von BUG (Beitrag 1311342)
Zum Inhalt wollte ich kein Feedback geben, dafür habe ich deutlich zu wenig davon nachvollzogen.

Genau das hast du jedoch gemacht :!: Du hast den Inhalt heruntergemacht, nachdem du dir die ersten paar Minuten angeschaut hast.

Zitat:

Zitat von BUG (Beitrag 1311342)
Ich bitte um Entschuldigung, wenn das zu abwertend rübergekommen ist :|

Ist es; Entschuldigung akzeptiert.

GroZ 7. Aug 2015 07:12

AW: Adressbuch mit Stringgrid.
 
Ich habe vor mir 3 verschiedene Bücher liegen wovon ich bereits 2 durchgearbeitet habe. Ich befasse mich seit 1 Woche mit Delphi jeden Tag (Arbeit). Dafür das ich vor 1 woche nichtmal nen Kreis konnte find ich schon das ich nen gutes Level habe.
Das lernen mit der Zeit kommt sowieso.
Jetzt lese ich mir http://www.delphi-treff.de/tipps-tri...ern-und-laden/
das hier zum Thema speichern durch damit das auch klappt.

Perlsau 7. Aug 2015 07:46

AW: Adressbuch mit Stringgrid.
 
Zitat:

Zitat von GroZ (Beitrag 1311369)
Jetzt lese ich mir http://www.delphi-treff.de/tipps-tri...ern-und-laden/
das hier zum Thema speichern durch damit das auch klappt.

Das ist der falsche Ansatz: Du mißbrauchst darstellende Komponenten zur Datenspeicherung. Ein StringGrid zur Datenspeicherung ist genau so zielführend wie die Suppe mit einer Gabel essen zu wollen. Richtiger wäre es, einen Record zu verwenden und diesen in ein Array zu packen, durch das du blättern kannst:
Delphi-Quellcode:
Type
    TAdress = Record
                  Nachname,
                  Vorname,
                  Strasse,
                  Ort     : String[100];
                  PLZ     : String[5];
                  GebDat  : TDate;
                  Index   : Integer;
              End;

Var
  Adressen : Array[1..1000] of TAdress;
Wie man sowas einrichtet und verwendet, wird in Video-Tutorial 3 erklärt. Den Quellcode zu Video-3 findest du in diesem Zip-Archiv. Die Fortsetzung findest du in den Videos 4a und 4b.

Wenn es dir jedoch nur darauf ankommt, überhaupt mal irgendwas zum Laufen zu kriegen, dann mach ruhig weiter so. Du kannst ein Moped natürlich auch mit den Pedalen vorwärts bringen, statt den Motor zu verwenden, geht alles. Dein Ansatz wird zwangsläufig in einer Sackgasse enden. Die meisten sind danach so frustriert, daß sie's aufgeben, sagt mir meine Erfahrung vor allem hier in den Foren. Warum nicht nach einer Woche herumspielen mit Delphi ernsthafter an die Sache herangehen, wenn du das schon in der Ausbilgung oder der Arbeit, also beruflich machen mußt? Du tust dir keinen Gefallen damit, gleich zu Anfang falsche Herangehensweisen einzuüben.

GroZ 7. Aug 2015 08:01

AW: Adressbuch mit Stringgrid.
 
Ich weiß nicht was dein Problem ist @Perlsau ich wette das jeder mal klein angefangen hat das ist mein 4. Programm und mein 2. was überhaupt einen sinn hat! Niemand erwartet von mir nen perfekten Quellcode hinzulegen wichtig ist das ich Delphi anfange zu verstehen. Ich weiß das es 100 vllt sogar 1000 bessere Methoden gibt Adressen zu speichern. Aber ich würde hier nicht um Hilfe bitten würde ich es wissen. Dies soll auf keinen Fall als böse angesehen werden. Aber ich denke ich brauch noch nicht alles perfekt zu beherrschen. Mir reicht es zum Anfang das ich Speichern und laden kann. Somit hat mein Adressbuch die Grundfunktion die es haben soll bereits erreicht. Mir ist wichtig das ich verstehe was ich da mache und das krieg ich nunmal am besten durch Learning by doing. Das jeder anders lernt ist klar. Bloß ich hab nach 10 Jahren festgestellt das ich mir Formeln, Befehle, Rechnungen usw. besser durch Anwendung lerne als wenn ich den ganzen Tag nen 1198 Seiten Buch lese um vllt nen Bruchteil zu verstehen von dem was da drin steht. Dadurch das ich gleich kleine Programme entwickle kann ich mir das besser vorstellen und weiß was ich tue (auch wenn es bei weitem nicht perfekt ist)
Sogesehen kann ich auch die Adressen in ner Datenbank speichern aber damit hab ich mich noch nicht befasst also nehme ich ein Stringgrid. Ich meine so falsch kann es ja nicht sein es funktioniert ja.

Daniel 7. Aug 2015 08:08

AW: Adressbuch mit Stringgrid.
 
Moin,

zum Lernen und "Warm-Werden" mit Delphi ist das doch okay.
Solange Du im Hinterkopf das Stichwort "Datenbank" hast und weißt, dass deren Verwendung später gewisse Vorteile bringen könnte, ist doch alles in Ordnung.
Du hast mit Delphi ein Werkzeug an der Hand, das Dir den Einstieg in das Thema "Datenbanken" vergleichsweise leicht macht, da deren Nutzung stets die starke Domäne von Delphi war und immer noch ist.

Captnemo 7. Aug 2015 08:32

AW: Adressbuch mit Stringgrid.
 
Zitat:

Zitat von Perlsau (Beitrag 1311264)
@GroZ:

Vor einiger Zeit hab ich ein Video-Tutorial für Anfänger zum Programmieren einer Adreßverwaltung erstellt, das in 5 Teilen bei YouTube zu finden ist. Im jeweiligen Text zu den Videos findest du auch einen Download-Link für den Quellcode.

Videotutorial Adressverwaltung Teil 1
Videotutorial Adressverwaltung Teil 2
Videotutorial Adressverwaltung Teil 3
Videotutorial Adressverwaltung Teil 4a
Videotutorial Adressverwaltung Teil 4b

Ich hab mir mal spaßeshalber eines deiner Tutorials angeschaut. Rein akustisch isch des für misch als Hochdeutscher a luschtiges Tutorial :-D
Auch ein Tutorial auf Schwäbisch oder von einem Ur-Bayern wär mal ein spaßiger Beitrag.
(Ist aber keine Kritik an deinem Tutorial :thumb:)

p80286 7. Aug 2015 10:08

AW: Adressbuch mit Stringgrid.
 
@GroZ
Es geht Perlsau nicht darum, Dich herunter zu machen, sondern er will im Vorfeld das Entstehen von schlechten Angewohnheiten verhindern. Insbesonders wenn es um "Daten" geht, dann ist die Anzeige nur Mittel zum Zweck, gearbeitet wird unter der Haube. Und da wir wissen, daß sich viele auch durchaus gestandene Programmierer sich mit der eigentlichen Datenverarbeitung schwer tun, darum der penetrante Hinweis auf geeignete Datenstrukturen und Dateien. Eine Datenbankanbindung im Hinterkopf zu behalten ist auch nicht falsch, nur wenn man vorher daran denkt, das Daten von irgendwo kommen und später wieder nach irgendwo geschrieben werden sollen/müssen, spart man sich einiges an Arbeit.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:50 Uhr.
Seite 1 von 2  1 2      

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