![]() |
AW: Min-Sort Verfahren
Nach einem zweiten Blick auf Deinen Sourcecode
würde ich sagen, der compiliert noch nicht einmal:
Delphi-Quellcode:
Des weiteren könnte es Dir helfen wenn Du ein wenig Ordnung in Deinen Code bringst.
procedure TForm1.Button2Click(Sender: TObject);
....,x,...:integer; begin ... x:=IntToStr(Random(100)+1); ... end; Dann sollte Dir aufffallen, daß Du den wert von x niemals in das Array bzw. das Memo bringst. Also investiere einmal 10 Minuten, und dann sehen wir weiter. Gruß K-H |
AW: Min-Sort Verfahren
Meine Rede ;)
|
AW: Min-Sort Verfahren
[OT] hab ich jetzt auch gemerkt, da fehlte wohl der rote Kasten [/OT]
Gruß K-H |
AW: Min-Sort Verfahren
Ich weise nur mal darauf hin, dass das Problem scheinbar 2x bearbeitet wird:
![]() |
AW: Min-Sort Verfahren
Also beim Programmieren kommt es auch darauf an, dass man die Arbeit strukturiert und sich diese damit wesentlich vereinfacht.
Delphi-Quellcode:
Unsere Hauptaufgabe sieht damit schon sehr reduziert aus
// Ein Integer-Array mit zufälligen Zahlen füllen
procedure FillArray( var AIntArray : array of Integer; Min, Max : Integer ); begin end; // Ein Integer-Array sortieren procedure SortArray( var AIntArray : array of Integer ); begin end; // Ein Integer-Array in ein Memo ausgeben procedure WriteArrayToMemo( const AIntArray : array of Integer; AMemo : TMemo ); begin end;
Delphi-Quellcode:
Im ganzen Satz und mit den programmierten Rümpfen (ausgenommen der Sortierung) sieht das dann so aus
// Mit Zahlen im Bereich 1 bis 100 füllen
FillArray( MeinArray, 1, 100 ); // Ausgabe im Memo1 WriteArrayToMemo( MeinArray, Memo1 ); // Array Sortieren SortArray( MeinArray ); // Ausgabe in Memo2 WriteArrayToMemo( MeinArray, Memo2 ); (EDIT: ich habe das jetzt auch mal an den Aufgabentext angepasst ;))
Delphi-Quellcode:
unit Main_ViewU;
interface uses SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class( TForm ) Unsortiert_Memo : TMemo; Sortiert_Memo : TMemo; Erzeuge_Button : TButton; MaxSort_Button : TButton; procedure Erzeuge_ButtonClick( Sender : TObject ); procedure MaxSort_ButtonClick( Sender : TObject ); private public end; var Form1 : TForm1; // Array mit den Zahlen MeinArray : array [1 .. 20] of integer; implementation {$R *.dfm} // Ein Integer-Array mit zufälligen Zahlen füllen procedure FillArray( var AIntArray : array of integer; Min, Max : integer ); var LIdx : integer; begin for LIdx := Low( AIntArray ) to High( AIntArray ) do begin AIntArray[LIdx] := Random( Max - Min + 1 ) + Min; end; end; // Ein Integer-Array sortieren procedure SortArray( var AIntArray : array of integer ); begin end; // Ein Integer-Array in ein Memo ausgeben procedure WriteArrayToMemo( const AIntArray : array of integer; AMemo : TMemo ); var LIdx : integer; begin AMemo.Lines.BeginUpdate; try AMemo.Clear; for LIdx := Low( AIntArray ) to High( AIntArray ) do begin AMemo.Lines.Add( IntToStr( AIntArray[LIdx] ) ); end; finally AMemo.Lines.EndUpdate; end; end; procedure TForm1.Erzeuge_ButtonClick( Sender : TObject ); begin // Mit Zahlen im Bereich 1 bis 100 füllen FillArray( MeinArray, 1, 100 ); // Ausgabe im Memo1 WriteArrayToMemo( MeinArray, Unsortiert_Memo ); end; procedure TForm1.MaxSort_ButtonClick( Sender : TObject ); begin // Array Sortieren SortArray( MeinArray ); // Ausgabe in Memo2 WriteArrayToMemo( MeinArray, Sortiert_Memo ); end; end. |
AW: Min-Sort Verfahren
Vielen Dank für dein Hilfe,
Jetzt hab ich dieses Problem, es zeigt uselect.pas(20,15) Error: Forward declaration not solved "TForm1.SelectionsortClick(TObject);" uselect.pas(21,15) Error: Forward declaration not solved "TForm1.ZufallszahlClick(TObject);" uselect.pas(63,1) Fatal: There were 2 errors compiling module, stopping
Code:
Ich verstehe nicht was von mir verlangt wird. Könnt ihr mal einen Blick drauf werfen und mir helfen.
unit Uselect;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Zufallszahl: TButton; Selectionsort: TButton; MemoZufallszahl: TMemo; MemoSelect: TMemo; procedure SelectionsortClick(Sender: TObject); procedure ZufallszahlClick(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; A: array [1..20] of integer; implementation {$R *.lfm} procedure AFuellen(var insArray: array of integer;Min, Max: integer); var i:integer; begin for i:= Low(insArray) to High (insArray) do begin insArray[i]:= Random(Max-Min+1)+Min; end; end; procedure ArraySortieren( var k:array of integer); Var i, j : LongInt; Temp, Min: LongInt; Begin For i := Low(k) To High(k) Do Begin Min := i; For j := i+1 To High(k) Do If k[j] < k[Min] Then Min := j; Temp := k[Min]; k[Min] := k[i]; k[i] := Temp; End; End; end. procedure InsMemo(const insArray: array of integer; AMemo:TMemo); var x:integer; begin AMemo.Lines.BeginUpdate; try AMemo.Clear; for x:= Low(insArray) to High (insArray) do begin AMemo.Lines.Add(IntToStr(insArray[x])); end; finally AMemo.Lines.EndUpdate; end; end; { TForm1 } procedure TForm1.ZufallszahlButtonClick(Sender: TObject); begin AFuellen(A,1,100); InsMemo(A,MemoZufallszahl); end; procedure TForm1.SelectionsortClick(Sender: TObject); begin SortArray(A); InsMemo(A,MemoSelect); end; end. |
AW: Min-Sort Verfahren
Das sieht nach C&P aus, da zumindest im Fall von ZufallszahlClick keine Übereinstimmung im implementation-Abschnitt existiert. Wieso packst Du nicht einfach 2 Buttons auf das Formular, benennst sie entsprechend und schreibst dann den Code in deren OnClick-Handler?
[edit] P.S.: Benutze doch bitte Delphi-Tags, das ist die "Helm"-Schaltfläche im Beitragseditor, dann ist der Code gleich besser zu lesen samt Syntax-Highlighting. [/edit] |
AW: Min-Sort Verfahren
Lösche die beiden procedures mit
Delphi-Quellcode:
aus dem implemention Teil und die beiden procedures aus der Klassendefinition.
TForm1.*
Dann im Formulardesigner jeweils ein Doppelklick auf die beiden Buttons. Dann solltest du die korrekten Rümpfe haben ;) |
AW: Min-Sort Verfahren
Delphi-Quellcode:
Jetzt zeigt er : uselect.pas(44,10) Error: Identifier not found "AFuellen"
unit Uselect;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Zufallszahl: TButton; Selectionsort: TButton; MemoZufallszahl: TMemo; MemoSelect: TMemo; procedure SelectionsortClick(Sender: TObject); procedure ZufallszahlClick(Sender: TObject); private { private declarations } public { public declarations } end; var Form1: TForm1; A: array [1..20] of integer; implementation {$R *.lfm} { TForm1 } procedure TForm1.ZufallszahlClick(Sender: TObject); begin AFuellen(A,1,100); InsMemo(A,MemoSelect); end; procedure TForm1.SelectionsortClick(Sender: TObject); begin ArraySortieren(A); InsMemo(A,MemoSelect); end; procedure AFuellen(var InsArray:array of integer;Min, Max: integer); var i:integer; begin for i:= Low(InsArray) to High (InsArray) do begin InsArray[i]:= Random(Max-Min+1)+Min; end; end; procedure ArraySortieren( var k:array of integer); Var i, j : LongInt; Temp, Min: LongInt; Begin For i := Low(k) To High(k) Do Begin Min := i; For j := i+1 To High(k) Do If k[j] < k[Min] Then Min := j; Temp := k[Min]; k[Min] := k[i]; k[i] := Temp; End; End; end. procedure InsMemo(const insArray: array of integer; AMemo:TMemo); var x:integer; begin AMemo.Lines.BeginUpdate; try AMemo.Clear; for x:= Low(insArray) to High (insArray) do begin AMemo.Lines.Add(IntToStr(insArray[x])); end; finally AMemo.Lines.EndUpdate; end; end; end. uselect.pas(45,9) Error: Identifier not found "InsMemo" uselect.pas(50,17) Error: Identifier not found "ArraySortieren" uselect.pas(51,10) Error: Identifier not found "InsMemo" uselect.pas(82,1) Fatal: There were 4 errors compiling module, stopping Und was soll ich jetzt machen? |
AW: Min-Sort Verfahren
Die anderen procedures (die mit ohne TForm1.*) musst du wieder nach oben kopieren ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:15 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