Einzelnen Beitrag anzeigen

diavy

Registriert seit: 11. Apr 2012
54 Beiträge
 
#13

AW: Liste von Namen auf Charakteristiken überprüfen

  Alt 21. Sep 2012, 16:30
Tut mir leid dass ich so lange gebraucht habe um zu antworten, mir ist einiges dazwischen bekommen.

Zunächst einen großen Dank an euch alle, wiedermal gab es schnelle, viele und vor allem sehr nützliche Antworten.

Ich habe versucht mir so viel als mögliche Ratschläge zu Herzen zu nehmen und das hat sich mehr als ausgezahlt, da der Code übersichtlicher wurde, und vor allem jetzt hinhaut.

Hier mein jetziger Code (wenn es noch Dinge auszusetzen gibten, lass es mich wissen):

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    edt_name: TEdit;
    Label1: TLabel;
    Button1: TButton;
    edt_start: TEdit;
    lbl_name: TLabel;
    lbl_letter: TLabel;
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    i,counter:integer;firstname:array of string;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function checkifstarting(a,b:string):boolean;
var i:integer;
begin
result:=true;
for i:=1 to Length(a) do
                if a[i]<>b[i] then result:=false;
end;

function checkifwithout(a,b:string):boolean;
var i,k:integer;
begin
result:=true;
for i:=1 to Length(a) do
                for k:=1 to Length(b) do
                        if a[i]=b[k] then result:=false;
end;

procedure TForm1.RadioButton1Click(Sender: TObject);
var l:integer;
begin
Label1.Caption:='';
for l:=low(firstname) to high(firstname) do
        if checkifstarting(edt_start.Text,firstname[l])=true then Label1.Caption:=Label1.Caption + ' ' + firstname[l]
end;

procedure TForm1.RadioButton2Click(Sender: TObject);
var l:integer;
begin
label1.Caption:='';
for l:=low(firstname) to high(firstname) do
        if checkifwithout(edt_start.Text,firstname[l])=true then Label1.Caption:=Label1.Caption + ' ' + firstname[l]
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if counter <>0 then inc(i);
SetLength(firstname,i+1);
firstname[i]:=edt_name.Text;
edt_name.text:='';
inc(counter);
end;

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

end.
Eine Frage stelle ich mir noch, wenn ich zB ein Mal das Programm mit 4 Namen benutze, und ein ander Mal 2 Namen verwende, habe ich ja eigentlich nur die 2 ersten Plätze im Array neu "belegt". Wenn ich dann auf den array zugreifen lasse zB mit high(array), hat das Programm dann nicht noch die 2 weiteren Namen (die nicht überschrieben wurden) gespeichert und greift auf diese zu obwohl sie nicht zu dem Zeitpunkt eingegeben wurden?
  Mit Zitat antworten Zitat