AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Suchalgorithmus -> Ungültige Zeigeroperation
Thema durchsuchen
Ansicht
Themen-Optionen

Suchalgorithmus -> Ungültige Zeigeroperation

Ein Thema von WhiteStar99 · begonnen am 21. Sep 2003 · letzter Beitrag vom 21. Sep 2003
 
WhiteStar99

Registriert seit: 21. Sep 2003
Ort: Hanau
6 Beiträge
 
Delphi 5 Professional
 
#1

Suchalgorithmus -> Ungültige Zeigeroperation

  Alt 21. Sep 2003, 10:29
Hallo!

ich weiß echt nimmer weiter mit meinem Programm, hier mal der Quellcode:

Delphi-Quellcode:
function TForm1.BinSuche(Key,laenge : Integer):integer;
var
   A, E : integer;
   M : integer;
   i : integer;
   feld : array of integer;
begin

// array füllen
setlength(feld, laenge);
for i:=0 to (laenge) do
  feld[i]:=strtoint(lb1.items.strings[i]);

// such algorithmus
A := 1;
E := length(feld)+1;
while A < E do begin
  M := (A + E) div 2;
  if Key > feld[M] then
    A := M+1
  else
    E := M;
end;
if (feld[E] = Key) then result := E else result := 0;

end;
Delphi-Quellcode:
procedure TForm1.BSuchenClick(Sender: TObject);
var Ergebnis, laenge : integer;
begin
laenge:= strtoint(EEnde.text)-strtoint(EAnfang.text);
//function aufrufen, result in Ergebnis speichern
Ergebnis:=BinSuche(StrToInt(EKey.Text),laenge);
EErgebnis.text:=inttostr(Ergebnis);
end;

procedure TForm1.BGenerierenClick(Sender: TObject);
var i, anfang,laenge : integer;
    feld: array of integer;
begin
anfang:=strtoint(EAnfang.text);
laenge:= strtoint(EEnde.text)-strtoint(EAnfang.text);
setlength(feld, laenge);

// stringlist füllen
  for i:=0 to (laenge) do begin
    feld[i]:=anfang;
    inc(anfang);
    lb1.items.strings[i]:=inttostr(feld[i]);
  end;

end;
das Programm hat 4 Eingabefehler, 3 davon muss man ausfüllen, Einmal Anfang für einen Startwert (zB 10), ein Ende zB 50 und ein Key (zu suchende Zahl).

Bsp:
Anfang 10, Ende 50 --> StringList 10,11,12,13,..,50
Key: 12

Ergebnis müsste 2 sein (da Index mit 0 beginnend).

Das Problem ist, dass das Programm ständig mit "Ungültige Zeigeroperation" aussteigt. Wenn ich als Bsp 20 und 50 nehme, dann klappt das Programm ohne den Fehler, bringt aber nach Schließung einen Zugriffsverletzungs-Fehler.

Ich weiß echt nicht mehr weiter, voralllem ist diese Ungültige Zeigeroperation Fehlermeldung für mich so nichtssagend. Sie kommt sogar, wenn ich im Quellcode in der function die variable result manuell auf 12 stelle.

Habe das Programm mal hier hochgeladen

Wäre für jede Hilfe dankbar!

Gruß
  Mit Zitat antworten Zitat
 


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:42 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