Von Anwendungsentwickler zu Anwendungsentwickler...
Wie kannst du einem anderen Menschen eine sichere "Anleitung" zur Lösung deines Problemes geben.
Diese Anleitung ist dann dein Algorithmus.
Angenommen deine Strings stehen auf Karteikarten in einer langen Reihe auf deinem Schreibtisch. Stell dir folgende Fragen:
-Wo fängst du an, dir deine Karteikarten durchzulesen
-Schreibst du dir eventuell Zwischenwerte auf
-Wann ist die Aufgabe vollständig gelöst
-Wie kannst du effektiver sein
Wenn du die Aufgabe hättest, rauszufinden wie viele Unterschiedliche Karten da liegen, wie würdest DU es in der echten Welt machen?
Delphi-Quellcode:
// will ich mal nicht so sein...
unit Unit1;
interface
uses
Winapi.Windows,
Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs;
type
TForm1 =
class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
function StringDasErsteMalAufgetreten(MomentanerString :
String) : Boolean;
var
Form1: TForm1;
SchonDaGewesen :
array of String;
Eingabe :
array [0..4]
of String;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
I : Integer;
Count : Integer;
begin
Eingabe[0]:='
A';
Eingabe[1]:='
B';
Eingabe[2]:='
B';
Eingabe[3]:='
C';
Eingabe[4]:='
A';
count := 0;
// gehe alle Strings durch
for I := Low(Eingabe)
to High(Eingabe)
do
begin
// schaue ob String das erste mal auftritt
if StringDasErsteMalAufgetreten(Eingabe[I])
then
begin
Inc(Count);
end;
end;
ShowMessage(IntToStr(Count))
end;
function StringDasErsteMalAufgetreten(MomentanerString :
String) : Boolean;
var
I: Integer;
begin
Result := True;
for I := Low(SchonDaGewesen)
to High(SchonDaGewesen)
do
begin
if MomentanerString = SchonDaGewesen[I]
then
begin
Result := False;
end;
end;
// String evtl in die "Schondagewesen-Liste" aufnehmen
if Result
then
begin
SetLength(SchonDaGewesen, Length(SchonDaGewesen) + 1);
SchonDaGewesen[High(SchonDaGewesen)] := MomentanerString;
end;
end;
end.