Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Einführung Stack-Programmierung


michaaaaa - So 21.06.09 16:10
Titel: Einführung Stack-Programmierung
Hallo Leute,
ich hab im Infounterricht (klasse 12) die Aufgabe bekommen eine zweite Unit (UStack) in das Hauptprogramm einzubinden.
Unser Lehrer konnte uns slebst nicht genau erklären wie wir das machen sollen (genial, ich weiß).

Zunächst hatten wir ne kleine Einführung zum Thema Stack bekommen und sollten anschließend anfangen zu programmieren.
Wir haben nur eine Vorgabe bekommen wie das Programm mal aussehen soll:
es gibt 5 Edit-Felder und 4 Button.
die Üschrift der Button sind: Init, Push, Top und Pop.
In die Edit-Felder sollen wir iwelche beliebige Zahlen schreiben.

ich hab schon versucht das zu programmieren, allerdings weiß ich nicht was ich in die Proceduren der 4 Button in der zweiten Unit rein schreiben soll.
Unser Lehrer meinte iwas von wegen mit nem Array Feld sollten wir das hinkriegen.(Mit dieser Info konnt ich ehrlich gesagt nichts anfangen)

Ich hab das Grundgerüst des Programmes hochgeladen

Ich hoffe ihr könnt mir helfen.


Moderiert von user profile iconNarses: Topic aus Dateizugriff verschoben am So 21.06.2009 um 23:42


BenBE - So 21.06.09 17:56

Hab da nen Geheimtipp für dich ...

Vom Meister persönlich [http://www.delphi-forum.de/viewtopic.php?p=474452#474452]:
Psssst: Crashkurs [http://www.christian-stelzmann.de/index_tutorials_crashkurs.html], Crashkurs Reloaded [http://www.christian-stelzmann.de/index_tutorials_crashkurs_reloaded.html]


michaaaaa - So 21.06.09 18:23

mmh...
da steht aber nichts zum thema stack...
trotzdem danke


kann mir nicht iwer iwie helfen oder zumindestens n dnekanstoß geben?


BenBE - So 21.06.09 18:25

Gib mal in deinem Editor TStack ein und drück F1 :P

Alternativ hilft auch eine Nutzung der Funktion "Suche", die dieses Forum bietet ;-)


michaaaaa - So 21.06.09 18:29

ich hab da jezz mal was zusammen gegoogelt und in meine stack unit gehauen...

hier das resultat...
hab aber lauter fehler - wär klasse wenn mir da einer helfen könnte



Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
unit UStack;


interface
 procedure Init;
 procedure Push(value: string):Boolean;
 procedure Top : string;
 procedure Pop : string;


 implementation

var
  stack: array[1..5of string;
  stackpointer : Integer;

  
  
procedure Init;
begin
  stackpointer = 0;
end;


procedure Push(value: string):Boolean;
begin
  if(stackpointer < 5then
  begin
    Inc(stackpointer);
    stack[stackpointer] = value;
    Push = True;
  end;
  else
  begin
    Push = False;
  end;
end;

procedure Top : string;
begin
  if(stackpointer > 0then
  begin
    Top = stack[stackpointer];
  end;
  else
  begin
    Top = "empty stack";
  end;
end;

procedure Pop : string;
begin
if(stackpointer > 0then
  begin
    Top = stack[stackpointer];
    Dec(stackpointer);
  end;
  else
  begin
    Top = "empty stack";
  end;
end;

end.


Moderiert von user profile iconGausi: Quote- durch Delphi-Tags ersetzt


Xentar - So 21.06.09 18:34

Wäre klasse, wenn du uns die Fehler auch verräts.


michaaaaa - So 21.06.09 18:42

naja...
richtig...
ich habs hier geuppt...könntet euch das file ja mal fix ziehen und compilieren


Xentar - So 21.06.09 18:50

Ist es so schwer, die Fehlermeldungen zu kopieren, und hier reinzupasten?


BenBE - So 21.06.09 18:50

Könntest Du bitte Delphi-Tags für deinen Post oben nehmen?

Zudem sollte es ja nicht zu schwer sein, uns kurz die Fehlermeldungen aufzuschreiben - Du möchtest von uns ja gerne Hilfe erhalten, weshalb man daher auch selber etwas in Vorleistung gehen sollte.


Xentar - So 21.06.09 18:52

Ok, ich habs mir grad doch mal genauer angesehen..

1. Procedure mit Rückgabetyp? Gibbet nicht, ist ne function
2. Zuweisungen mit :=
3. kein ; vor einem Else
usw..

LIES die Grundlagen!


michaaaaa - So 21.06.09 19:15


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
unit UStack;


interface
 procedure Init;
 function Push(value: string):Boolean;
 function Top : string;
 function Pop : string;


 implementation

var
  stack: array[1..5of string;
  stackpointer : Integer;

  
  
procedure Init;
begin
  stackpointer := 0;
end;


function Push(value: string):Boolean;
begin
  if(stackpointer < 5then
  begin
    Inc(stackpointer);
    stack[stackpointer] := value;
    Push := True;
  end
  else
  begin
    Push := False;
  end;
end;

function Top : string;
begin
  if(stackpointer > 0then
  begin
    Top := stack[stackpointer];
  end
  else
  begin
    Top := 'empty stack';
  end;
end;

function Pop : string;
begin
if(stackpointer > 0then
  begin
    Top := stack[stackpointer];
    Dec(stackpointer);
  end
  else
  begin
    Top := 'empty stack';
  end;
end;

end.



in zeile 55 und 60 (fett makiert) kommt der fehler:
"der linken Seite kann nichts zugewiesen werden"
wisst ihr da antwort?

Moderiert von user profile iconGausi: Quote- durch Delphi-Tags ersetzt
Moderiert von user profile iconGausi: B- durch Highlight-Tags ersetzt


Xentar - So 21.06.09 19:26

Verwende result statt Top.

Und nochmal: Delphi Tags hier im Forum, kein Zitat. Dann bleibt auch die Formatierung erhalten.


michaaaaa - So 21.06.09 19:43

danke...
hat geklappt...
programm läuft


#############closed###############