AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Globale Variable wird geändert einfach so
Thema durchsuchen
Ansicht
Themen-Optionen

Globale Variable wird geändert einfach so

Ein Thema von Kn1bbl · begonnen am 12. Dez 2004 · letzter Beitrag vom 13. Dez 2004
 
Kn1bbl

Registriert seit: 23. Nov 2003
9 Beiträge
 
Delphi 7 Enterprise
 
#1

Globale Variable wird geändert einfach so

  Alt 12. Dez 2004, 17:01
Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Edit1: TEdit;
    ListBox1: TListBox;
    Button1: TButton;
    ListBox2: TListBox;
    Button2: TButton;
    Button3: TButton;
    Label1: TLabel;
    Label2: TLabel;
    RadioGroup1: TRadioGroup;
    Button4: TButton;
    GroupBox3: TGroupBox;
    Edit2: TEdit;
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure einlesen();
    procedure ausgabe();
    procedure FormCreate(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

type feldtype = array[1..100] of integer;



var
  Form1: TForm1;
  anzahl: integer;
  werte: feldtype;

implementation

{$R *.dfm}

procedure TForm1.Button3Click(Sender: TObject);
begin
        close;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
        edit1.clear;
        listbox1.Clear;
        listbox2.Clear;
        radiogroup1.ItemIndex := -1;
end;

procedure TForm1.einlesen();
var i: integer;
begin
        {Leeren der Listboxkomponente vor dem ersten/erneuten Eintragen}
        listbox1.Clear;
        anzahl := 0;

        {Beginn der Eingabeüberprüfung}
        if edit1.Text = 'then
        begin
                anzahl := strtoint(inputbox('Keine Anzahl eingegeben!', 'Anzahl bitte eingeben:', '23'));
                edit1.Text := inttostr(anzahl);
        end
        else if strtoint(edit1.Text) > 100 then
        begin
                anzahl := strtoint(inputbox('Anzahl ist zu klein!', 'Anzahl bitte eingeben:', '23'));
                edit1.Text := inttostr(anzahl);
        end
        else if strtoint(edit1.Text) < 1 then
        begin
                anzahl := strtoint(inputbox('Anzahl ist größer als 100!', 'Anzahl bitte eingeben:', '23'));
                edit1.Text := inttostr(anzahl);
        end
        else
        begin
                anzahl := strtoint(edit1.Text);
                edit1.Text := inttostr(anzahl);
        end;
        {Ende der Eingabeüberprüfung}


        {Beginn Zuweisung}
        for i := 1 to anzahl do
        begin
                {Eintragen der Werte in das Feld}
                werte[i] := random(100) + 1;
                {Eintragen der Werte in die Listboxkomponente}
                listbox1.Items.Add(inttostr(werte[i]));
        end;
        {Ende Zuweisung}
end;

procedure TForm1.ausgabe();
var i: integer;
begin
        for i := 1 to anzahl do
        begin
                ListBox2.Items.Add(inttostr(werte[i]));
        end;
end;

procedure bubblesort();
var i, j, tmp: integer;
begin
        for i := 1 to (anzahl - 1) do
                for j := anzahl downto 1 do
                        if werte[j - 1] < werte[j] then
                        begin
                                tmp := werte[j - 1];
                                werte[j - 1] := werte[j];
                                werte[j] := tmp;
                        end;
end;

procedure shellsort();
var k,i:integer;
begin
        k := werte[1];
        for i := 1 to anzahl do
        begin
                if werte[i] < k then
                        k := werte[i];
        end;

        showmessage(inttostr(k));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
        einlesen();
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
        randomize;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
        ListBox2.Clear;

        case RadioGroup1.ItemIndex of
                -1: showmessage('Bitte wählen sie das Verfahren aus!');
                0: bubblesort();
                1: shellsort();
                2: showmessage('Bitte wählen sie das Verfahren aus!');
        end;

        ausgabe();
end;

end.
Hallo,

das ist der Code der mir Kopfverbrechen bringt. Es geht um ein Schulprojekt, ganz einfach eigenltich, Sortieralgorithmen.

Dort haben wir eine Eingabe welche ein Array voll haut mit n Elementen (n wird eingegeben und heisst im Program anzahl: integer). Und obwohl ich keinen Befehl sehen kann, wo anzahl geändert wird, ändert sich anzahl in der procedure bubblesort.
Die Eingabe Funktion scheint zu funktionierne.
Wenn ich jedoch anzahl gleich am Anfang von bubblesort()ausgeben lasse, hat es noch den richtigen wert, jedoch ist dies nicht mehr der Fall nachdem die Schleifen durchlaufen wurden. Dabei wird es aber nie direkt geändert.

Bitte helft mir!
  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 00:57 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