AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlermeldungen aller Art ~

Ein Thema von SilverSunlight · begonnen am 8. Nov 2011 · letzter Beitrag vom 9. Nov 2011
Antwort Antwort
Seite 1 von 2  1 2      
SilverSunlight

Registriert seit: 3. Nov 2011
2 Beiträge
 
#1

Fehlermeldungen aller Art ~

  Alt 8. Nov 2011, 17:29
Hallö zusammen Ich mal wieder.
Ich bastel immernoch an meinem Sortier-Programm herum und bekomme es einfach nicht auf die Reihe. Morgen ist Abgabe .. Ogott.
Für ein paar meiner Fragen hab ich hier im Forum durch rumsuchen und durchlesen schon so meine Antworten gefunden, aber da gibt es noch Sachen, die ich nicht schaffe.
Aaaaalso.
Ich soll eine Datenmenge (Unsortierte Nachnamen) mit Hilfe von 3 Sortieralgorithmen sortieren. Meine Wahl fiel auf Bubblesort, Mergesort, sowie Quicksort. Der Bubble funktioniert auch( YUHU! ), aber bei den anderen beiden hängt es ein bisschen ...
Beim Merge kommt (beim Ausführen des Programms -> Ausführen des Mergesorts) eine Fehlermeldung "Zugriffsverweigerung". Und ich komme einfach nicht dahinter wieso. o_O

Der Quicksort sagt mir ständig eine Meldung nach der anderen, noch bevor ich das Programm überhaupt öffnen kann. Diesmal ist es "Nicht genügend wirkliche Parameter".

Könntet ihr bitte einmal drüber schauen? Vielleicht wisst ihr ja, wo meine Fehler liegen :s

Hier mein Code :

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Heading: TLabel;
    BubbleButton: TButton;
    QuickButton: TButton;
    MergeButton: TButton;
    OpenButton: TButton;
    Eingabe: TEdit;
    OpenDialog1: TOpenDialog;
    Label2: TLabel;
    Ausgabe: TListBox;
    SaveDialog1: TSaveDialog;
    Speichern: TEdit;
    SaveButton: TButton;
    RadioGroup1: TRadioGroup;
    Aufsteigend: TRadioButton;
    Abfallend: TRadioButton;
    procedure OpenButtonClick(Sender: TObject);
    procedure BubbleButtonClick(Sender: TObject);
    procedure MergeButtonClick(Sender: TObject);
    procedure MergeSort(var L,R: Integer);
    procedure QuickButtonClick(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  txtfile: Textfile;
  save: string;
  Feld, Merken: Array of string;
  Z: Integer;

implementation

{$R *.DFM}

procedure Quicksort(l,r: Integer;var a : array of integer);

var i, j, Merke, Mitte: Integer;

begin
i := l;
j := r;
Mitte := a[(l+r) div 2];
repeat
while a[i] < Mitte do Inc(i);
while Mitte < a[j] do dec(j);
if i <= j then
begin
Merke := a[i];
a[i] := a[j];
a[j] := Merke;
inc(i);
dec(j);
end;
until i > j;
if l < j then Quicksort(l,j,a);
if i < r then Quicksort(i,r,a);
end;

procedure TForm1.MergeSort(var L, R : integer );
var
  i, j, k, m, m2 : Integer;
begin
if R>L then
begin
m:= (R+L) div 2;
m2:= m+1;
MergeSort( L, m);
MergeSort( m2, R);
for i:= L to m do Merken[i]:= Feld[i];
i:= L;
for j:= m+1 to R do Merken[R+m+1-j]:= Feld[j];
j:= R;
for k:= L to R do
begin
if (Merken[i] < Merken[j]) then
begin
Feld[k]:= Merken[i];
inc(i);
end
else
begin
Feld[k]:= Merken[j];
dec(j);
end;
end;
end;
end;

procedure TForm1.OpenButtonClick(Sender: TObject);
var
A: Integer;
begin
Z:=0;
OpenDialog1.Execute;
Eingabe.Text:=OpenDialog1.Filename;
AssignFile(txtfile, Eingabe.text);
reset (txtfile);
while not eof (txtfile) do
begin
Z:= Z+1;
readln (txtfile, save);
Ausgabe.items.add(save);
end;
Setlength(Feld, Z);
reset(txtfile);
for A:= 0 to Z-1 do
begin
readln (txtfile, Feld[A]);
end;
end;

procedure TForm1.BubbleButtonClick(Sender: TObject);
var
x: Integer;
Temp: String;
Done: Boolean;

begin
Ausgabe.clear;
repeat
done:= True;
for x := Low(Feld) to High(Feld) -1 do
begin
if Feld[x] > Feld[x+1] then
begin
Temp := Feld[x];
Feld[x] := Feld[x+1];
Feld[x+1] := Temp;
Done := False;
end;
end;
until done;

if Aufsteigend.checked=True then
begin
for x:= Low(Feld) to High(Feld) do
begin
Ausgabe.Items.add(Feld[x]);
end;
end

else if Abfallend.checked=True then
begin
for x:= High(Feld) downto Low(Feld) do
begin
Ausgabe.Items.add(Feld[x]);
end;
end;
end;

procedure TForm1.MergeButtonClick(Sender: TObject);
var
g,c,x: Integer;
begin
c:= Low(Feld);
g:= High(Feld);
Ausgabe.clear;
begin
MergeSort (c,g);

if Aufsteigend.checked=True then
begin
for x:= Low(Feld) to High(Feld) do
begin
Ausgabe.Items.add(Feld[x]);
end;
end

else if Abfallend.checked=True then
begin
for x:= High(Feld) downto Low(Feld) do
begin
Ausgabe.Items.add(Feld[x]);
end;
end;
end;
end;

procedure TForm1.QuickButtonClick(Sender: TObject);
var
i,j: Integer;
begin
i:= Low(Feld);
j:= High(Feld);
Ausgabe.clear;
begin
QuickSort (i,j);
end;
end;
end.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

AW: Fehlermeldungen aller Art ~

  Alt 8. Nov 2011, 17:33
Formatier Deinen Code mal nachvollziehbar und sag uns dann, in welchen Zeilen Fehlermeldungen kommen. Zumindest ich habe keine Lust, mich da durchzuwühlen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.079 Beiträge
 
Delphi 12 Athens
 
#3

AW: Fehlermeldungen aller Art ~

  Alt 8. Nov 2011, 17:36
Erstmal empfehle ich dir, die Indexprüfung, in den Projektoptionen zu aktivieren, vorallem wenn man Kreuz und Quer in Arrays rummacht.

Und dann ...
[edit]
DeddyH war schneller
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#4

AW: Fehlermeldungen aller Art ~

  Alt 8. Nov 2011, 17:39
1. Sprechende Variablennamen verwenden. "i, j, k, m, m2 : Integer;" Wenn du in zwei Monaten noch weißt was m2 macht, haste Glück gehabt.
2. Bei den Fehlern wird auch immer eine Zeile angegeben
3. Der Fehler nennt sich doch sicher "Zugriffsverletzung" und nicht "Zugriffsverweigerung"
4. Deinem Merken-Array im Mergesort weist du nirgends eine Länge zu (oder ich hab's übersehen)
5. Schau dir mal die Signatur deiner Quicksort-Method an. Wieviele Parameter? So und nun den Aufruf anschauen. Wieviele Parameter?
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#5

AW: Fehlermeldungen aller Art ~

  Alt 8. Nov 2011, 18:43
Ohne hinzugucken würde ich bei i,j,k auf Zählvariablen tippen. Das ist allgemein so üblich, also alles halb so wild.

Viel lustiger ist, das Du Code abschreibst, den du überhaupt nicht verstehst. Ist es das, was man heutzutage in der Schule lernt? Schade eigentlich.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#6

AW: Fehlermeldungen aller Art ~

  Alt 8. Nov 2011, 19:40
Der Quicksort ist so in Ordnung, allerdings solltest Du mal nachdenken mit was Du Ihn aufrufen willst

procedure Quicksort(L, R: Integer; [b]var a: array of Integer[/b]); Da wo Du ihn aufrufen willst übergibst Du a also das zu sortierende Integer Array nicht
statt dessen kruschtelst DUu mit Feld herum welches so deklariert ist
  Feld, Merken: Array of string;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

AW: Fehlermeldungen aller Art ~

  Alt 8. Nov 2011, 20:00
Bitte gib deinem ersten Beitrag einen aussagekräftigen Titel, der auch etwas über das Problem aussagt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.079 Beiträge
 
Delphi 12 Athens
 
#8

AW: Fehlermeldungen aller Art ~

  Alt 9. Nov 2011, 07:39
4. Deinem Merken-Array im Mergesort weist du nirgends eine Länge zu (oder ich hab's übersehen)
Wegen sowas und für fehlgeflaufene Arrayzugriffe, mein Tipp mit den Projektoptionen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#9

AW: Fehlermeldungen aller Art ~

  Alt 9. Nov 2011, 09:30
Ohne hinzugucken würde ich bei i,j,k auf Zählvariablen tippen. Das ist allgemein so üblich, also alles halb so wild.
Deshalb hatte ich mich auf m2 bezogen
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#10

AW: Fehlermeldungen aller Art ~

  Alt 9. Nov 2011, 09:34
Hat sich ja wohl mittlerweile von allein erledigt:
Morgen ist Abgabe .. Ogott.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz