AGB  ·  Datenschutz  ·  Impressum  







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

Namensprogramm hilfe!

Ein Thema von raysto · begonnen am 6. Nov 2010 · letzter Beitrag vom 6. Nov 2010
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

AW: Namensprogramm hilfe!

  Alt 6. Nov 2010, 16:06
Und hier meine Lösung mit einem statischen Array:
Delphi-Quellcode:
unit Unit11;

interface

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

const
    MAXNAMES = 3;

type
  TForm11 = class(TForm)
    edtName: TEdit;
    btnSave: TButton;
    btnShowNameList: TButton;
    btnClearList: TButton;
    Label1: TLabel;
    procedure btnClearListClick(Sender: TObject);
    procedure btnShowNameListClick(Sender: TObject);
    procedure btnSaveClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    Names: array[0..MAXNAMES - 1] of string;
    CurrentIndex: Cardinal;
  public
    { Public-Deklarationen }
  end;

var
  Form11: TForm11;

implementation

{$R *.dfm}

procedure TForm11.btnClearListClick(Sender: TObject);
var
  i: Integer;
begin
  for i := 0 to High(Names) do
    Names[i] := '';
  CurrentIndex := 0;
end;

procedure TForm11.btnSaveClick(Sender: TObject);
begin
  btnSave.enabled := CurrentIndex < MAXNAMES - 1;
  edtName.enabled := CurrentIndex < MAXNAMES - 1;
  Names[CurrentIndex] := edtName.Text;
  if CurrentIndex < MAXNAMES - 1 then
  begin
    Inc(CurrentIndex);
    edtName.Clear;
    edtName.SetFocus;
  end;
end;

procedure TForm11.btnShowNameListClick(Sender: TObject);
var
  i: Integer;
  NameList: string;
begin
  for i := 0 to High(names) do
  begin
    NameList := NameList + Names[i] + #13#10;
  end;
  ShowMessage(NameList);
end;

procedure TForm11.FormCreate(Sender: TObject);
begin
  CurrentIndex := 0;
end;

end.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#2

AW: Namensprogramm hilfe!

  Alt 6. Nov 2010, 16:19
2 Dinge dazu: werden lokale Stringvariablen automatisch leer initialisiert? Und selbst wenn, dann würde ich das aus Gewohnheit und gutem Stil geschuldet trotzdem selbst machen. Und wieso verwendet Ihr nicht die Konstante sLineBreak? Ich weiß zwar auch, dass das #13#10 ist, aber das muss man sich ja dann nicht mehr merken
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
raysto

Registriert seit: 6. Nov 2010
62 Beiträge
 
#3

AW: Namensprogramm hilfe!

  Alt 6. Nov 2010, 16:19
Sry das ich euch nerve, aber ich versteh nur Bahnhof xD
Das Kapitel, mit dem wir Arrays gelernt haben, sieht so aus:

Delphi-Quellcode:
Kapitel 13 - Arrays
Manchmal benötigt man ziemlich viele Variablen, dann ist es etwas problematisch immer wieder neue anzulegen. Auch die Mathematik kennt das Problem und benutzt dann statt der Variablen a, b, c, ... die Variablen a1, a2, a3, ...
Das gleiche Prinzip kann man auch in der Informatik nutzen. Hier heißen solche indizierten Variablen Arrays. Statt der Variable a, b, c, ... legt man sich hier die Variable a[1], a[2], a[3], ... an. Auch diese Variablen müssen einen bestimmten Typ besitzen. Möchte man sich zum Beispiel die Belegung von einem Schachbrett merken, so kann man sich ein Array vom Typ String anlegen, dass von 1 bis 64 indiziert.
 var i : integer;
 var schachbrett: array[1..64] of string; // Legt sich ein Array namens schachbrett vom Typ string an
begin // Das Array akzeptiert einen Index zwischen 1 und 64
  for i := 1 to 64 do // Gehe alle 64 Felder durch und ...
    schachbrett[i]:=''; // ... weise diesen einen leeren String zu
  schachbrett[1]:='Turm'; // Weise dem ersten Feld den Wert 'Turm' zu
  schachbrett[2]:='Springer'; // usw ...
  schachbrett[3]:='Läufer';
  schachbrett[4]:='Dame';
  // ...
end;
Das obige Bespiel beschreibt ein sogenanntes eindimensionales Array. Manchmal möchte man aber auch Daten 2-dimensional ablegen (also in einer Art Tabelle). Dann kann man sich auch ein 2-dimensionales Array erstellen. Gerade beim Schach würde sich ein 2-dimensionales Array anbieten, da auch die Felder auf dem Schachbrett in mehrere Zeilen und Spalten unterteilt sind. Folgendes Beispeil verdeutlicht die Idee und die dazugehörige Syntax.
Delphi-Quellcode:
var i1,i2 : integer;
 var schachbrett: array[1..8,1..8] of string;
begin
  for i1 := 1 to 8 do
    for i2 := 1 to 8 do
      schachbrett[i1,i2]:='';
  schachbrett[1,1]:='Turm';
  schachbrett[2,1]:='Springer';
  schachbrett[3,1]:='Läufer';
  schachbrett[4,1]:='Dame';
end;

Wie man sieht hat jetzt das Array zwei Indizies. Sie rechen jeweils von 1 bis 8. So ergeben sich ebenfalls 64 Felder. Der große Unterschied ist, dass man sich do die Lage der Felder besser vorstellen kann und so besser und übersichtlicher programmieren kann. Selbstverständlich kann man auch Arrays mit noch mehr Dimensionen anlegen. Dies kommt aber in der gängigen Programmierpraxis eher selten vor.

Weitere Beispiele für Arrays sind:

Delphi-Quellcode:
VierGewinntFeld: array[1..7,1..6] of char; // entweder ' ' für leer oder 'g' für gelb, 'r' für rot
Namensliste: array[1..1000] of string; // hier kann man zum Beispiel eine Liste aller Schüler der Schule
                                           // oder Klasse anlegen. Man sollte sich dann aber noch eine Variable
                                           // NamenslisteCount vom Typ integer anlegen, in der man ablegt, wie
                                           // viele Einträge das Array derzeit besitzt. So kann man auch zur
                                           // Laufzeit weitere Einträge hinzufügen, so lange man nicht über
                                           // 1000 Einträge kommt.
UserListe: Array[1...9999] of TUser; // Eine Liste von Usern. Hier gibt es etwas besonderes, TUser ist
                                           // ein eigener Datentyp, den man vorher über das Schlüsselword
                                           // record angelegt hat.
Aufgaben:

Notiere dir wie immer die wichtige Inhalte in deinem Hefter. Insbesondere die fettgedruckten Wörter sind wichtig.
Finde mindestens drei weitere Beispiele für sinnvolle Arrays
Erstelle ein Programm, wo man in einem Textfeld beliebig viele Namen nacheinander eingeben kann. Die Namen werden nach dem Drücken vom Speichern-Button auf ein Array gelegt. Mit Drücken auf den Ausgabe-Button werden alle bisher eingegebenen Namen Nacheinander in einer Messagebox ausgegeben. Gebe das Programm ab

Da steht von euren Sachen noch gar nichts drin xD
Geht das nicht i-wie leichter?
Ich bin grad überfordert, sry...

Geändert von mkinzler ( 6. Nov 2010 um 17:04 Uhr) Grund: Code-Tag durch Delphi-Tag ersetzt und aufgespalten
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Namensprogramm hilfe!

  Alt 6. Nov 2010, 16:32
Das ist die leichteste Methode die es gibt
Wie stellst du es dir denn vor?
  Mit Zitat antworten Zitat
raysto

Registriert seit: 6. Nov 2010
62 Beiträge
 
#5

AW: Namensprogramm hilfe!

  Alt 6. Nov 2010, 16:35
Keine Ahnung xD
Einfach leichter halt^^
Irgendwie so, dass man den Array + 1 nimmt, (hatte ich ganz am anfang gedacht xD)und dann da den nächsten Namen speichern kann^^
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#6

AW: Namensprogramm hilfe!

  Alt 6. Nov 2010, 16:37
Siehe nochmal Beitrag #5.
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
raysto

Registriert seit: 6. Nov 2010
62 Beiträge
 
#7

AW: Namensprogramm hilfe!

  Alt 6. Nov 2010, 16:47
Zitat:
Speicherst Du nun einen neuen Namen, legst Du ihn im Index NamenCounter des Array ab und erhöhst die Variable anschließend.
Wieso soll ich ihn denn in der Variable NamenCounter speichern?
Ich will den Namen doch auf dem Array[1] speichern und dann den nächsten auf dem Array[2] etc.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#8

AW: Namensprogramm hilfe!

  Alt 6. Nov 2010, 16:49
Delphi-Quellcode:
NamenCounter := 1;
DeinArray[NamenCounter] := 'Gustav';
NamenCounter := NamenCounter + 1;
DeinArray[NamenCounter] := 'August';
Was geschieht in diesem kleinen Beispiel wohl?
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
Antwort Antwort


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 07:59 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-2025 by Thomas Breitkreuz