Autor Beitrag
DaVinciFF7 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32

Win XP
Delphi 2007
BeitragVerfasst: Mo 29.09.08 22:17 
OK Ich habs geschafft^^ ich hätte nur die prozedur zerstueckeln festlegen und ein "(Sender: TObject)" dahintersetzen müssen ^^ geht jetzt soweit...
Jetzt hab ich zwar immer einen stackoverflow, weil er scheinbar meine if-schleife ignoriert, aber egal xD
wie mach ich das denn mit den delphi tags?
Die Muhkuh
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Mo 29.09.08 22:19 
Es gibt keine If-Schleife!!! :zwinker:

Die Tags

[delphi]procedure Blubb;
begin

end;[/delphi]

Einfach ein [delphi][/delphi] um Deinen Code drum rum.
DaVinciFF7 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32

Win XP
Delphi 2007
BeitragVerfasst: Mo 29.09.08 22:22 
xDXD ok ja ich habs nicht so mit begrifflichkeiten, außerdem steht auf nem flipchart in unserem computerraum ganz groß "Die If-Schleife in Delphi"
^^

ja das mit dem Stack Overflow isn bisschen blöd...ich schreib mal kurz die prozeduren, die damit zusammenhängen rein:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
procedure TForm1.EingabeBtnClick(Sender: TObject);
begin
   if Eingabe.text<>'' then Baum.einfuegen(Baum, Eingabe.text);
   Eingabe.clear;  ActiveControl:=Eingabe;
end;

procedure TForm1.zerstueckeln(Sender: TObject);
var i:integer;
begin
if i+2<length(form1.memo1.Text) then
form1.eingabe.text:=copy(form1.Memo1.text,i,i+2);
i:=i+1;
EingabeBtnClick(sender);
zerstueckeln(sender)
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if memo1.text<>'' then
zerstueckeln(sender);
end;
Die Muhkuh
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Mo 29.09.08 22:26 
Das Problem liegt an zerstückeln, das ins unendliche laufen wird.

Du deklarierst eine lokale Variable "i" und greifst direkt danach drauf zu, ohne sie zu initialisieren (der Compiler sollte das sowieso melden). Das kann nicht funktionieren.

Entweder Du initialisiert die Variable mit *etwas und darfst sie aber nicht lokal deklarieren oder Du machst aus dem ganzen eine For-Schleife (oder auch While-Schleife) und zerstückelst damit. Letzteren Weg würde ich bevorzugen.
DaVinciFF7 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32

Win XP
Delphi 2007
BeitragVerfasst: Mo 29.09.08 22:28 
Dann sieht das so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.zerstueckeln(Sender: TObject);
var i:integer;
begin
while i+2<length(form1.memo1.Text) do
form1.eingabe.text:=copy(form1.Memo1.text,i,i+2);
i:=i+1;
EingabeBtnClick(sender);
zerstueckeln(sender);
end;


Hab aber immernoch nen Stackoverflow

EDIT:

Ich glaub, der Fehler ist, dass i ja nicht festgelegt wird am anfang...wenn ich das aber rekursiv mache, kann ich ja nicht sagen

ausblenden Delphi-Quelltext
1:
2:
begin
i:=1


und dann den anderen kram, weil er die dann ja immer wieder auf 1 macht....


Zuletzt bearbeitet von DaVinciFF7 am Mo 29.09.08 22:32, insgesamt 1-mal bearbeitet
Die Muhkuh
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 33



BeitragVerfasst: Mo 29.09.08 22:32 
Ich wiederhole mich nur ungerne :zwinker:

user profile iconDie Muhkuh hat folgendes geschrieben:
Du deklarierst eine lokale Variable "i" und greifst direkt danach drauf zu, ohne sie zu initialisieren (der Compiler sollte das sowieso melden). Das kann nicht funktionieren.


Ich würde Dir noch empfehlen, das eine oder andere Grundlagentutorial zu lesen, bevor Du "wie wild" drauf los legst :zwinker:

Da Du übrigens eine Methode draus gemacht hast, kannst Du innerhalb der Methode auf das "form1." verzichten.
DaVinciFF7 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32

Win XP
Delphi 2007
BeitragVerfasst: Mo 29.09.08 22:34 
user profile iconDie Muhkuh hat folgendes geschrieben:
Ich wiederhole mich nur ungerne :zwinker:

user profile iconDie Muhkuh hat folgendes geschrieben:
Du deklarierst eine lokale Variable "i" und greifst direkt danach drauf zu, ohne sie zu initialisieren (der Compiler sollte das sowieso melden). Das kann nicht funktionieren.


Ich würde Dir noch empfehlen, das eine oder andere Grundlagentutorial zu lesen, bevor Du "wie wild" drauf los legst :zwinker:

Da Du übrigens eine Methode draus gemacht hast, kannst Du innerhalb der Methode auf das "form1." verzichten.


xD
Ja das mit dem Grundlagentutorial ist so ne sache^^
Ich leg ja nicht wie wild drauf los, prinzipiell hab ich ja einigermaßen Ahnung und das ist ja ne Hausaufgabe für den ganzen Kurs.
Ich müsste ja i einfach nur am Anfang auf 1 setzen, aber das ist ja dann blöd mit der Rekursion in der Prozedur.
Vorschläge?^^

EDIT:
Und nein ich kann nicht drauf verzichten^^ wenn ich das tue, kommt immer die Fehlermeldung "undeclared identifier"

EDIT2:
oh kann ich doch xD


Zuletzt bearbeitet von DaVinciFF7 am Mo 29.09.08 22:37, insgesamt 2-mal bearbeitet
nagel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 708

Win7, Ubuntu 10.10

BeitragVerfasst: Mo 29.09.08 22:35 
user profile iconDaVinciFF7 hat folgendes geschrieben:
xDXD ok ja ich habs nicht so mit begrifflichkeiten, außerdem steht auf nem flipchart in unserem computerraum ganz groß "Die If-Schleife in Delphi"


Durchstreichen. Sofort. ;)
DaVinciFF7 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32

Win XP
Delphi 2007
BeitragVerfasst: Mo 29.09.08 22:42 
Habs jetzt mal nicht-rekursiv probiert, dann läuft das programm aber einfach und hört auch nciht mehr auf. sieht so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TForm1.zerstueckeln(Sender: TObject);
var i:integer;
begin
i:=1;
while i+2<length(memo1.Text) do
eingabe.text:=copy(Memo1.text,i,i+2);
i:=i+1;
EingabeBtnClick(sender);
end;
LexXis
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 170
Erhaltene Danke: 3



BeitragVerfasst: Mo 29.09.08 23:23 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure TForm1.zerstueckeln(Sender: TObject);
var i:integer;
begin
i:=1;
while i+2<length(memo1.Text) do
begin
eingabe.text:=copy(Memo1.text,i,i+2);
i:=i+1;
EingabeBtnClick(sender);
end;
end;


;)
DaVinciFF7 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 32

Win XP
Delphi 2007
BeitragVerfasst: Di 30.09.08 09:59 
Ok dankeschön, es geht jetzt :)
problem solved würd ich sagen :)