Einzelnen Beitrag anzeigen

ghost1601

Registriert seit: 26. Aug 2006
64 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Suchfunktion für ein Array

  Alt 24. Dez 2006, 15:03
Zitat von 3_of_8:
Also abgesehen davon, dass deine Funktion jetzt nicht so sonderlich effizient ist, ist sie eigentlich in Ordnung... Sicher, dass der Fehler nicht irgendwo anders liegt?

Grenze das ganze mal mit Breakpoints und Evaluator ein bissel ein.
ja also effizient - das ist in meinen Programmen leider noch ein Fremdwort - aber ich wüsste echt nicht wo der Fehler sonst noch sein könnte...
Vielleicht hilft es ja wenn der gesamte Quelltext hier steht, eventuell findet ja jemand an einer anderen Stelle noch den Fehler

Delphi-Quellcode:
private
    procedure ArrayinMaske;
    procedure MaskeinArray;
    function Suche (const sucheNach : String): LongInt;
    function Suche2 (const sucheNach : String): LongInt;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation
type tdaten=record
      clanname:string[20];
      clankuerzel:string[10];
      homepage:string[30];
      spiel:string[20];
      kontaktname:string[30];
      icq:string[11];
      msn:string[30];
      maps:string[150];
      kommentar:string[150];
end;

const max=100;

var p:integer;
    daten:tdaten;
    datenfeld:array[1..max]of tdaten;
    datendatei:file of tdaten;
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var zaehler:integer;
begin
p:=1;
zaehler:=1;
statusbar1.Panels[0].Text:='Position: '+inttostr(p) + '/' + inttostr(max);

assignfile(datendatei, 'datenblatt.td');
if FileExists('datenblatt.td')
  then
    begin
    reset(datendatei);
      for zaehler:=1 to max do
          begin
            read(datendatei,daten);
            datenfeld[zaehler]:=daten;
          end;
    end
  else
    begin
      ReWrite(datendatei)
    end;
closefile(datendatei);
arrayinmaske;
end;

procedure TForm1.ArrayinMaske;
begin
  daten:=datenfeld[p];
  edit1.text:=daten.clanname;
  edit2.text:=daten.clankuerzel;
  edit6.text:=daten.homepage;
  combobox1.text:=daten.spiel;
  edit3.text:=daten.kontaktname;
  edit4.Text:=daten.icq;
  edit5.Text:=daten.msn;
  memo1.text:=daten.maps;
  memo2.Text:=daten.kommentar;
  statusbar1.simpletext:='Position: '+inttostr(p) + '/' + inttostr(max);
  daten:=datenfeld[p];
  end;
procedure TForm1.MaskeinArray;
begin
   daten.clanname:=edit1.text;
   daten.clankuerzel:=edit2.text;
   daten.homepage:=edit6.text;
   daten.spiel:=combobox1.Text;
   daten.kontaktname:=edit3.text;
   daten.icq:=edit4.text;
   daten.msn:=edit5.Text;
   daten.maps:=memo1.text;
   daten.kommentar:=memo2.text;
   datenfeld[p]:=daten;
end;

function TForm1.Suche(const sucheNach : String): LongInt;
var i : Integer;
begin
for i:= 1 to max do
    if datenfeld[i].clanname = SucheNach then
        result := i;
end;

function TForm1.Suche2(const sucheNach : String): LongInt;
var i : Integer;
begin
for i := 1 to max do
    if datenfeld[i].clankuerzel = SucheNach then
        result := i;
end;


procedure TForm1.Button2Click(Sender: TObject);
var zaehler:integer;
begin
MaskeinArray;
  if p<max then inc(p);
ArrayinMaske;
assignfile(datendatei,'sicherheitskopie von datenblatt.td');
rewrite(datendatei);
for zaehler:=1 to max do
  begin
    daten:=datenfeld[zaehler];
    write(datendatei,daten);
  end;
closefile(datendatei);
end;

procedure TForm1.Button1Click(Sender: TObject);
var zaehler:integer;
begin
MaskeinArray;
  if p>1 then dec(p);
ArrayinMaske;
assignfile(datendatei,'sicherheitskopie von datenblatt.td');
rewrite(datendatei);
for zaehler:=1 to max do
  begin
    daten:=datenfeld[zaehler];
    write(datendatei,daten);
  end;
closefile(datendatei);
end;

procedure TForm1.ffnen1Click(Sender: TObject);
var zaehler:integer;
begin
if opendialog1.execute then
  begin
    assignfile(datendatei, opendialog1.filename);
    reset(datendatei);
        for zaehler:=1 to max do
          begin
            read(datendatei,daten);
            datenfeld[zaehler]:=daten;
          end;
     closefile(datendatei);
     arrayinmaske;
  end;
end;

procedure TForm1.speichern2Click(Sender: TObject);
var zaehler:integer;
begin
  maskeinarray;
  if savedialog1.execute then
    begin
      assignfile(datendatei,savedialog1.filename);
      rewrite(datendatei);
      for zaehler:=1 to max do
        begin
          daten:=datenfeld[zaehler];
          write(datendatei,daten);
        end;
       closefile(datendatei)
  end;
end;


procedure TForm1.beenden1Click(Sender: TObject);
var zaehler:integer;
begin
assignfile(datendatei,'datenblatt.td');
rewrite(datendatei);
for zaehler:=1 to max do
  begin
    daten:=datenfeld[zaehler];
    write(datendatei,daten);
  end;
closefile(datendatei);
close;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
ShellExecute(0,'open','iexplore.exe',PChar(Edit6.Text),nil,SW_SHOW);
end;

procedure TForm1.FormDestroy(Sender: TObject);
var zaehler:integer;
begin
maskeinarray;
assignfile(datendatei,'datenblatt.td');
rewrite(datendatei);
  for zaehler:=1 to max do
    begin
      daten:=datenfeld[zaehler];
      write(datendatei,daten);
    end;
closefile(datendatei)
end;


procedure TForm1.suchen2Click(Sender: TObject);
var such : String;
  i: Integer;

begin
  such := InputBox('suchen nach Clannamen', 'Suche', '');
  begin
  i:= Suche(such);
  daten:=datenfeld[i];
  edit1.text:=daten.clanname;
  edit2.text:=daten.clankuerzel;
  edit6.text:=daten.homepage;
  combobox1.text:=daten.spiel;
  edit3.text:=daten.kontaktname;
  edit4.Text:=daten.icq;
  edit5.Text:=daten.msn;
  memo1.text:=daten.maps;
  memo2.Text:=daten.kommentar;
  daten:=datenfeld[i];
  end;
end;

procedure TForm1.suchennachClantag1Click(Sender: TObject);
var such : String;
    i: Integer;
begin
  such := InputBox('suchen nach Clantag', 'Suche', '');
  begin
  i:= Suche2(such);
  daten:=datenfeld[i];
  edit1.text:=daten.clanname;
  edit2.text:=daten.clankuerzel;
  edit6.text:=daten.homepage;
  combobox1.text:=daten.spiel;
  edit3.text:=daten.kontaktname;
  edit4.Text:=daten.icq;
  edit5.Text:=daten.msn;
  memo1.text:=daten.maps;
  memo2.Text:=daten.kommentar;
  daten:=datenfeld[i];
  end;
end;
end.
  Mit Zitat antworten Zitat