![]() |
Problem bei Sortieralgorithmus
Hya,
ich hab derzeit ein Problem mit dem bubblesort algorithmus. ich hatte ihn bisher in schon vielen Programmen in delphi umgesetzt aber gerade will er einfach nicht. Das programm stürtzt ab wenn der algorithmus durchläuft. und ich finde den fehler einfach nicht. hier der code:
Delphi-Quellcode:
ist zum sortieren von datensätzen aus einer typisierten datei.Procedure TForm1.Tausch(a,b:KontaktType); var c:kontakttype; Begin c := a; a := b; b := c; end; Procedure TForm1.sortieren; var i,dfs:integer; fertig:boolean; filename:string; begin filename := ExtractFilePath(application.exename)+datafile; assignfile(df,filename); if fileexists(filename) then reset(df) else rewrite(df); for i := 1 to filesize(df) do begin read(df,kontakte[i]); end; dfs := filesize(df); repeat fertig := True; for i := 1 to dfs-1 do begin if kontakte[i].Name > kontakte[i+1].Name then begin tausch(kontakte[i],kontakte[i+1]); fertig := false; end; end; until fertig = true; seek(df,0); for i := 1 to dfs do begin write(df,kontakte[i]); end; closefile(df); end; Wäre echt cool wenn von euch einer den fehler entdecken würde muß weiter kommen. Greetz Master_BB |
Re: Problem bei Sortieralgorithmus
Block ich net.
Was is KontaktType für eine Art Variable??? Und was is das: filename := ExtractFilePath(application.exename)+datafile; Wo wird datafile deklariert & definiert??? Das fehlt doch die Hälfte. Damit werden wohl wenig klarkommen... Fragen wir mal so: Du hast eine Datei in der folgende Zeilen stehen: 1 56 78 13443 2324 etc. und die soll einfach sortiert werden? Sind da nur numerische oder auch alphanumerische Daten enthalten??? |
Re: Problem bei Sortieralgorithmus
hm ich bin davon ausgegangen das das nicht benötigt wird da es an sich eindeutig ist das es funktioniert da speichern und laden läuft.
aber hier die deklarationen - kontakttype ist ein record und das hier filename := ExtractFilePath(application.exename)+datafile; datafile ist die konstante und das davor gibt den pfad zurück wo sich die anwendung befindet. das haut aber alles hin. und da wir kontakte[i].name mit einander vergleichen werden strings sortiert nach a-z
Delphi-Quellcode:
type kontaktType = packed record Name :string[50]; tele :string[20]; handy:string[20]; fax :string[20]; adr :string[255]; end; const ver = 'v0.5Beta'; maxD = 1000; datafile = 'adressen.dat'; var df:file of kontakttype; kontakte:array[1..maxd]of kontakttype; |
Re: Problem bei Sortieralgorithmus
Dein Sort-Algorhytmus ist falsch aufgebaut.
Delphi-Quellcode:
Schau mal
repeat
fertig := True; for i := 1 to dfs-1 do // bei einer Schleife ist nur sicher, dass das begin // größte Element ganz hinten steht if kontakte[i].Name > kontakte[i+1].Name then begin tausch(kontakte[i],kontakte[i+1]); fertig := false; end; end; until fertig = true; ![]() |
Re: Problem bei Sortieralgorithmus
hab den dummen fehler endlich gefunden.
der war soo dumm. kukt mal in meine tausch procedure. dort wurde ein werteparameter verwendet anstatt eines variablenparameters das ist der einzigste fehler. so siehts richtig aus
Delphi-Quellcode:
komisch das das von euch keiner gesehen hat
Procedure TForm1.Tausch(VAR a,b:KontaktType);
var c:kontakttype; Begin c := a; a := b; b := c; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:06 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