AGB  ·  Datenschutz  ·  Impressum  







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

Edit-Felder => array of integer

Ein Thema von Z4ppy · begonnen am 27. Jan 2009 · letzter Beitrag vom 29. Jan 2009
Antwort Antwort
Seite 1 von 2  1 2      
Z4ppy

Registriert seit: 25. Apr 2008
269 Beiträge
 
Delphi 7 Enterprise
 
#1

Edit-Felder => array of integer

  Alt 27. Jan 2009, 17:31
Ich programmiere zurzeit an einem Sudoku Solver
Nun hab ich eine Variable Sudoku (array[1..9,1..9] of integer), die die gegebenen Zahlen enthalten soll. Eingegeben wird alles über 81 Editfelder (Kommt mir jetzt nicht mit Kritik, ich solle es mit StringGrid machen, ich wills mit Editfeldern lösen )

Ich habe die Editfelder allerdings schlau benannt, nämlich nicht einfach Edit1, Edit2 usw., sondern so:
1. Zeile des Sudokus: Edit11, Edit12, Edit13, ... , Edit19
2. Zeile des Sudokus: Edit21, Edit22, Edit23, ... , Edit29
usw.

Nun zu meinem Problem:
Ich könnte das ganze natürlich so einspeichern:
Delphi-Quellcode:
Sudoku[1,1]:=StrToInt(Edit11.Text);
Sudoku[1,2]:=StrToInt(Edit12.Text);
{...}
Sudoku[9,8]:=StrToInt(Edit98.Text);
Sudoku[9,9]:=StrToInt(Edit99.Text);
Allerdings bin ich zu faul, das so zu lösen Gibts eine klügere Methode? z.B. mit einer for-Schleife like this:
Delphi-Quellcode:
for i:=1 to 9 do
  for j:=1 to 9 do
    Sudoku[i,j]:=StrToInt(Editij.Text);
Natürlich wird das so nicht funktionieren wegen dem "Editij", aber ich denke, ihr wisst, was ich meine

MfG Z4ppy

PS.: Ja, ich weiss, ich muss testen ob in den Edit-Feldern ein Integer steht und das mach ich vorher auch, daher ist das StrToInt da sicher kein Problem
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: Edit-Felder => array of integer

  Alt 27. Jan 2009, 17:37
Delphi-Referenz durchsuchenFindComponent / Hier im Forum suchenFindComponent
$2B or not $2B
  Mit Zitat antworten Zitat
Z4ppy

Registriert seit: 25. Apr 2008
269 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Edit-Felder => array of integer

  Alt 27. Jan 2009, 17:40
Wäre das dann so richtig?
Delphi-Quellcode:
for i:=1 to 9 do
  for j:=1 to 9 do
    Sudoku[i,j]:=StrToInt(TEdit(FindComponent('Edit'+IntToStr(i)+IntToStr(j))).Text);
MfG Z4ppy
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#4

Re: Edit-Felder => array of integer

  Alt 27. Jan 2009, 17:41
Hallo,

mal ganz schmutzig hingeschrieben ohne Test...:
Delphi-Quellcode:
for i:=1 to 9 do
  for j:=1 to 9 do
    Sudoku[i,j] := StrToInt(TEdit(FindComponent('Edit' + IntToStr(i) + IntToStr(j))).Text);
[OT]Ihr seid mir heute zu schnell [/OT]
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

Re: Edit-Felder => array of integer

  Alt 27. Jan 2009, 17:43
jupp, oder
Sudoku[i,j]:=StrToInt(TEdit(FindComponent(Format('Edit%d%d', [i, j]))).Text); eventuell noch 'ne Fehlerbahandlung z.B. ala StrToIntDef/TryStrToInt
$2B or not $2B
  Mit Zitat antworten Zitat
Z4ppy

Registriert seit: 25. Apr 2008
269 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Edit-Felder => array of integer

  Alt 27. Jan 2009, 17:46
Alles klar, danke für die schnelle Hilfe

MfG Z4ppy

PS.: Das mit dem Testen is schon klar
  Mit Zitat antworten Zitat
Z4ppy

Registriert seit: 25. Apr 2008
269 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Edit-Felder => array of integer

  Alt 29. Jan 2009, 09:31
Nochmal hierzu: Wie kann man FindComponent auch ausserhalb der Form1.Create benutzen? Delphi 7 meckert dann, dass er die Funktion nicht kennt -.-

MfG Z4ppy
  Mit Zitat antworten Zitat
globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#8

Re: Edit-Felder => array of integer

  Alt 29. Jan 2009, 10:53
wie wär's denn ungefähr so:

Delphi-Quellcode:
const maxidx = 9;

type
  TForm1 = class(TForm)
    Edit11: TEdit;
    Edit12: TEdit;
    Edit13: TEdit;
    ...
    Edit21: TEdit;
    Edit22: TEdit;
    Edit23: TEdit;
    ...
    Edit91: TEdit;
    Edit92: TEdit;
    Edit93: TEdit;
    ...
    Edit99: TEdit;

    procedure FormCreate(Sender: TObject);
    procedure FormShow(Sender: TObject);
  private
    { Private-Deklarationen }
    EditCompNo: array[1..maxidx,1..maxidx] of integer;
    function myEditName(i,j: integer): string;
    function myEdit(i,j: integer): TEdit;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.myEditName(i, j: integer): string;
begin
  Result:='Edit'+IntToStr(i)+IntToStr(j);
end;

function TForm1.myEdit(i, j: integer): TEdit;
begin
  Result:=Components[EditCompNo[i,j]] as TEdit;
end;

procedure TForm1.FormCreate(Sender: TObject);
var i,j: Integer;
    Editname: string;
begin
  for i:=1 to maxidx do
  begin
    for j:=1 to maxidx do
    begin
      Editname:=myEditName(i,j);
      EditCompNo[i,j]:=FindComponent(Editname).ComponentIndex;
    end;
  end;

end;

procedure TForm1.FormShow(Sender: TObject);
var i,j: Integer;
begin
  for i:=1 to maxidx do
    for j:=1 to maxidx do
      myEdit(i,j).Text:=IntToStr(i)+IntToStr(j);
end;
nur so als Gedanke ... und statt die Felder einzeln hinzuzappeln, könntest du dir auch ne Routine schreiben, um ein TEdit beim Create zu erzeugen. Damit könntest du dann alle Edit-Felder in einem Rutsch mit allen Eigenschaften definieren, positionieren und ganz nebenbei auch EditCompNo belegen.

mit myEdit(i,j) hast du dann immer Zugriff auf die Felder
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Edit-Felder => array of integer

  Alt 29. Jan 2009, 10:59
Zitat von globetrotter77:
wie wär's denn ungefähr so:

<snip>

nur so als Gedanke ... und statt die Felder einzeln hinzuzappeln, könntest du dir auch ne Routine schreiben, um ein TEdit beim Create zu erzeugen. Damit könntest du dann alle Edit-Felder in einem Rutsch mit allen Eigenschaften definieren, positionieren und ganz nebenbei auch EditCompNo belegen.

mit myEdit(i,j) hast du dann immer Zugriff auf die Felder
Uli Gerhardt
  Mit Zitat antworten Zitat
Stutz

Registriert seit: 3. Apr 2006
Ort: Bad Waldsee
11 Beiträge
 
#10

Re: Edit-Felder => array of integer

  Alt 29. Jan 2009, 11:07
ein dynamisches Array hätte auch den Vorteil dass du mal ein "Hexadoku"(also 16X16) oder ein 4x4 Sudoku machen könntest ohne gleich eine neue Form schreiben zu müssen -> is flexibler

(nur so als Anregung)
wer versucht das zu finden was er sucht, wird niemals erfolg haben,
um erfolg zu haben muss man das suchen was man findet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:38 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