Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi problem bei schleife (https://www.delphipraxis.net/22307-problem-bei-schleife.html)

Nicodius 15. Mai 2004 21:46


problem bei schleife
 
Delphi-Quellcode:
//Z1   
      Str := Pos('!-',Text.Lines.Strings[i])+2;
      for e := 0 to Pos('+', Text.Lines.Strings[i]) do
        Befehl := Befehl + Text.Lines.Strings[i][Str+e];
      Z1 := Befehl;
      Befehl := '';
// Z2
      Str := Pos('+',Text.Lines.Strings[i])+1;
      for e := 0 to Pos('-!', Text.Lines.Strings[i]) do
        Befehl := Befehl + Text.Lines.Strings[i][Str+e];
      Z2 := Befehl;
      SendMessage(Addieren(StrToInt(Z1),StrToInt(Z2)));
    end;

--> man gibt das ein Rw: !-4+9-! und 13 sollte in ner mesasge(prozeduren stimmen alle es geht nur um die schleife) ausgeben


also das Problem er schribt nacher "9-! kein Integer --> bei //Z2

--> --> --> pos-2 bringt auch nix...

danke im Voraus

atreju2oo0 15. Mai 2004 22:10

Re: problem bei schleife
 
Code:
 
for e := 1 to Pos('-!', Text.Lines.Strings[i]) do
        Befehl := Befehl + Text.Lines.Strings[i][Str+e];
Du musst bei 1 anfangen, weil sonst das "+" Zeichen mit übernommen wird, oder? :gruebel:

Nicodius 16. Mai 2004 04:59

Re: problem bei schleife
 
naja :? komischh aber das wars nicht es hängt nur immer das -! an :cry:

IngoD7 16. Mai 2004 10:08

Re: problem bei schleife
 
Sorry, aber du schreibst ohne Punkt und Komma. Zumindest ich habe überhaupt nicht verstanden, was du erreichen möchtest und was genau daran nicht funktioniert.

Schreibe dein Problem doch mal sorgfältig(!) auf. Vor allen Dingen, was genau in
Code:
Text.Lines.Strings[i]
steht.

GLaforge 16. Mai 2004 14:27

Re: problem bei schleife
 
Hi,
kann dein Code nicht so ganz durchschauen aber vielleicht muss du unter
Delphi-Quellcode:
for-to-do
die jeweiligen Befehle in
Delphi-Quellcode:
begin ... end
setzen.

Nicodius 16. Mai 2004 17:41

Re: problem bei schleife
 
das programm ist ein kleines "programmiersystem" :D

wollt nur net das des wieder in falsche Münder(;) :love: Luckie) kommt und man denkt das ich jetzt ein neues Delphi programmeire(n will)[ich erinner mich an das "Betriebsystem"] ist nur ein Test



also Text.Lines.strings[i] durchsucht nur die aktuelle Zeile(geht zeilenweise durch)--> das programm soll jetzt das berrechnen(addieren ist das jetzt) Rw: !-34+67-!

wobei nach Rw: beliebig viele Lehrzeichen sein dürfen und auch beliebig viele Ziffern möglich sind es hat schon mal geklappt aber dann hat Patrick (Patricius) gesagt ich solle es etwas verändern und adnn hab ich natürlich, so wie ich bin, ene general restaurierung gemacht und ein paar zeichen gändert


hoffe ihr versteht des jetzt ;) danke im Voraus
mfg
Nicodius

glkgereon 16. Mai 2004 19:40

Re: problem bei schleife
 
Delphi-Quellcode:
Str := Pos('!-',Text.Lines.Strings[i])+2;
for e := 0 to Pos('+', Text.Lines.Strings[i]) do
   Befehl := Befehl + Text.Lines.Strings[i][Str+e];
Ich weiss nit obbes dat ist, da ich nicht ganz durchblicke (schreib mal typ und funktion deiner variablen dazu :wink: )
aber das kommt mir komisch vor:

str ist offenbar die stelle, wo der erste summand anfängt...
e soll dann zählen von 0 bit position von dem +
da stimmt was nicht... :gruebel:

Arghhh :wall: ich habs, da muss statt
Delphi-Quellcode:
for e := 0 to Pos('+', Text.Lines.Strings[i]) do
das
Delphi-Quellcode:
for e := 0 to Pos('+', Text.Lines.Strings[i])+str do
hin, glaub ich

weil er zählt ja um str stellen zu weit...

kann ich jetzt nicht erklären, aber probiers mal aus...

IngoD7 16. Mai 2004 23:17

Re: problem bei schleife
 
Zitat:

Zitat von Nicodius
Text.Lines.strings[i] durchsucht nur die aktuelle Zeile(geht zeilenweise durch)--> das programm soll jetzt das berrechnen(addieren ist das jetzt) Rw: !-34+67-!

Was willst du bei dem Beispiel erreichen?
Eine Berechnung von 3+4+6+7, also jede Ziffer einzelnd addieren, oder
eine Berechnung von 34+67, also die Zahlen/Werte addieren?

Grundsätzlich, überlege mal, was du tust (ich beziehe mich auf dein Eingangsposting) - siehe Kommentare im Code:
Code:
//Z1
// Beipiel: Text.Lines.Strings[i] ist "Rw: !-4+9-!"
Str := Pos('!-',Text.Lines.Strings[i])+2;            //Str ist 7 (zeigt auf die "4")
for e := 0 to Pos('+', Text.Lines.Strings[i]) do     //e --> 0 bis 8
   Befehl := Befehl + Text.Lines.Strings[i][Str+e];  //Befehl ist danach Zeichen 7 - 15,
                                                      //also "4+9-!"
                                                      //Soll das so sein? Glaube ich nicht ...
Z1 := Befehl;
Befehl := '';
Aber geraten und geglaubt wurde hier jetzt schon genug!

Siehe meine Frage oben.

Und lese mal in der Online-Hilfe etwas nach über den Befehl Copy. Den kannst du wohl gut gebrauchen.

Nicodius 17. Mai 2004 14:26

Re: problem bei schleife
 
=) ich teste mal deinen Beitrag, glkbkk danke :)

Nicodius 17. Mai 2004 14:32

Re: problem bei schleife
 
geht leider nicht :cry:

IngoD7 17. Mai 2004 15:36

Re: problem bei schleife
 
Zitat:

Zitat von Nicodius
geht leider nicht :cry:

Was für ein Wunder ... :roll:

Hast du dir mein Posting auch angeschaut? Dort steht etwas in den Code-Kommentaren von "e --> 0 bis 8".

Mit dem, was du anscheinend eben getestet hast ...

Code:
for e := 0 to Pos('+', Text.Lines.Strings[i])+str do
(von glkbkk)

... hast du schon für e die Werte 0 bis 15 - also noch falscher.

Nicodius 17. Mai 2004 15:38

Re: problem bei schleife
 
;) :mrgree:

ich glaub ich machs anders ...
wie mach ich das wenn ich mehr als nur 2 Zahlen addieren mag hat wer einen Vorschlag?

dann streich ich die zeilen und könnt ihr mir erkären wie ich das verwiklich:

RW: 34+67+89+45


wie müsste ich da vor gehen?

Anubis 17. Mai 2004 15:59

Re: problem bei schleife
 
Parser einfach ma durchsehen *g*

IngoD7 17. Mai 2004 16:13

Re: problem bei schleife
 
:|

Du möchtest fertigen Code haben, richtig?
Am besten ist noch, man ist mit hellseherischen Fähigkeiten ausgestattet, damit man dich nicht mit Rückfragen quält. Wenn aber diese Rückfragen dennoch kommen, beantwortest du sie gar nicht oder völlig unzureichend. Das ist nicht mein Verständnis von Hilfe suchen und Hilfe geben.

Und wenn langsam diese Kritikpunkte hochkochen, dann wird dein Anliegen anscheinend irgendwie gewechselt (siehe dein letztes Posting). Was allerdings jetzt daran anders sein soll, könnte ich nicht sagen, weil du es nicht erklären kannst oder willst.

Wenn du dein Problem und etwaige Rückfragen dazu nicht erörtern kannst oder willst, wie soll dir dann geholfen werden? Glaubst du, man schreibt dir solange Quelltext hier rein, bis er zufällig passt? Und solange er nicht passt, schreibst du immer nur "geht nicht"?

Mache dir selber auch mal Gedanken.

Lies jetzt meine Postings und dann weisst du, warum der Compiler einen Fehler meldet (ausserdem ist die Fehlermeldung ja schon Klartext). Wenn du den von dir benutzten Befehl Pos verstanden hast, dann befolge meinen Tipp und lese in der Hilfe etwas über den Befehl Copy nach. Und wenn du das verstanden hast, dann kannst du deine for-e-Schleife schonmal vergessen. Kurz: Suche mit Pos die richtigen Stellen und hole mit Copy die richtigen Zeichen raus. Und dann sieh mal weiter.

Nicodius 17. Mai 2004 18:13

Re: problem bei schleife
 
das versteh ich ja.. ich wollte ja wissen wie mans außer dem copy machen kann ;)

--> ich habe meinen fehler, wie du hoffentlich gelesen hast sonst bringt mir die hilfe nix, genauestens(so genau es eben ging) bei meinem ERSTEN POSTING erklärt :D


aber egal: glaub mir Pos versteh ich :roll: eher ist es die Logig die dahinter steht


--> Ok ich such mir jetzt die position eines "+" raus dann schau ich wo das nächste plus ist ... dann subtrahiere ich das erste vom zweiten -----> ok aber wenn ic hdas jetzt umsetze kommen fehler .... deshalb will ich für diese porzedur, und ich bete darum, den Quelltext haben da ich es nicht logisch übersetzen kann


so ist, wie schon erwähnt mein lieber IngoD7, meine frage wie ich den code für diese Zeile(die ich, wie schon erwähnt, in ein memo eingebe,

"RW: 34+67+89+45" --> wie mache ich eine Porzedur mit delphi die diese einzelnen Werte addiert(und belibig viele andere) und dann ausgibt


hoffe DAS war jetzt genau genug,

danke IngoD7 du hast mir die augen geöffnet :shock: :drunken: :mrgreen: :zwinker:

Nicodius 17. Mai 2004 18:14

Re: problem bei schleife
 
ah danke anubis du bringst es auf den punkt!


DANKE ANUBIS ES GEHT och mensch warum nicht gleich =) einer versteh mich :D

IngoD7 17. Mai 2004 20:03

Re: problem bei schleife
 
Hi Nicodius,

wir wollen uns ja auch nicht streiten ....

Ich sage dir mal, was mich stört:

Zitat:

Zitat von Nicodius
das versteh ich ja.. ich wollte ja wissen wie mans außer dem copy machen kann ;)

Du gehst mit deinem Problem schlampig um. Schon alleine, dass du einfach sagst, du willst dein Problem ohne Copy lösen. Man programmiert das aber normalerweise mit Copy (okay, es gibt auch andere Möglichkeiten). Aber ganz bestimmt macht man es nicht mit einer Schleife, um zusammenhängende Zeichen aus einem String zu holen. Würdest du dich darum kümmern und es versuchen zu verstehen, so würde dein Fehler danach womöglich gar nicht mehr auftreten. Eben weil du ihn mit deinem "neuen" Wissen dann vielleicht quasi vollautomatisch vermeiden würdest.

Zitat:

Zitat von Nicodius
Ok ich such mir jetzt die position eines "+" raus dann schau ich wo das nächste plus ist ... dann subtrahiere ich das erste vom zweiten [...]
"RW: 34+67+89+45" --> wie mache ich eine Porzedur mit delphi die diese einzelnen Werte addiert(und belibig viele andere) und dann ausgibt

Und wieder so eine Schlampigkeit. Du sprichst zunächst von Subtraktion, danach von Addition. Das provoziert meine Rückfrage: Wann soll addiert und wann soll subtrahiert werden?

In den ersten Postings war von "Rw: !-34+67-! " die Rede, jetzt ist es "RW: 34+67+89+45". Die unterschiedliche Menge der Zahlen ist okay, da es unterschiedlich viele sein können, wie du geschrieben hast. Aber auf einmal sind keine Bindestriche und Ausrufezeichen mehr drin. Mal Hüh, mal Hott.

Verstehst du, was ich meine? Würdest du deine Frage mal unfallfrei zu Papier bekommen, wäre vielleicht schon lange jemand da gewesen, der dir den Code mundgerecht serviert hätte.

Zitat:

Zitat von Nicodius
da ich es nicht logisch übersetzen kann

Das akzeptiert ja auch jeder. Ich frage mich nur, wie du so ein Programm jemals fertig kriegen willst, wenn du alle Tipps in den Wind schlägst und nur auf fertigen Code wartest.

Du hast hier 450 Postings. Das deutet darauf hin, dass du nicht nur mal eben deine Hausaufgaben von anderen gemacht haben möchtest, sondern dass dich Delphi wirklich interessiert (wäre es anders, hättest du von mir in diesem Thread kein einziges Postings gelesen). Darum verstehe ich aber nicht, wieso du bei solchen Stringbearbeitungs-Grundlagen quasi verzweifelst.

Zitat:

Zitat von Nicodius
danke IngoD7 du hast mir die augen geöffnet :shock: :drunken: :mrgreen: :zwinker:

Das glaube ich nicht ... :cry: :wink:

So, wenn du es so möchtest - letzte Frage:
Ist dein Problem mit dem Hinweis von Anubis tatsächlich erledigt???

glkgereon 17. Mai 2004 20:23

Re: problem bei schleife
 
probier noch mal meins, nur statt +str -str...

ich hab mir nämlich selbst wiedersprochen :-D
Zitat:


tu statt dem
Code:
for e := 0 to Pos('+', Text.Lines.Strings[i]) do
das
Code:
for e := 0 to Pos('+', Text.Lines.Strings[i])+str do
hin, glaub ich
weil er zählt ja um str stellen zu weit...
er zählt dann wie schon ma gesagt noch länger
trotzdem war mein anstz glaub ich richtig...

also
Code:
for e := 0 to Pos('+', Text.Lines.Strings[i])-str do

Nicodius 17. Mai 2004 20:26

Re: problem bei schleife
 
ja ich probiers danke ;)


@ IngoD7 : ok ja wir wollen uns nicht streiten :cheers:

--> natürlich interessiert mich delphi ;) sonst wär ich auch nicht in dem FOrum :D


--> Ich hab nur das copy nicht verwendet weil ich mit dem nicht zurecht komme(kann das copy(mein Gehirn kann nicht) logisch übersetzen --> kommen IMMER Fehelr bei mir)

naja . abgesehen davon: mit dem copy erreichst du beim ersten anlauf meist nie was (ich zumindest) .. ok

add:
Zitat:

Du hast hier 450 Postings. Das deutet darauf hin, dass du nicht nur mal eben deine Hausaufgaben von anderen gemacht haben möchtest, sondern dass dich Delphi wirklich interessiert (wäre es anders, hättest du von mir in diesem Thread kein einziges Postings gelesen). Darum verstehe ich aber nicht, wieso du bei solchen Stringbearbeitungs-Grundlagen quasi verzweifelst.
haha --> 450 Postings :D ... --> --> "Stringbearbeitungs-Grundlagen " haha es gehtheir nicht um einfache Befehle(glaub mir stringbefehle kennich "uqasi" alle :D) --> sondern um die Logik von der mir(laut meinen Lehrern in Mathe und Rechnungswesen) leider nicht viel in die Wiege gelegt wurde ;) --> kann man nix machen ich brauch halt mal ne halbe stunde für einen "mittleren" lösungsweg

so: wegen dem Plötzlichen "Rw: " ohne "!-" das liegt daran das es unsinnig ist wenn mans leichter auch haben kann :mrgreen:
jetzt hab ich als anfang genommen(mithilfe des codes von ANUBIS´) " und als ende ein Rufzeichen...

das geht jetzt eh

hoffe du verstehst jetzt meinen plötzlichen Lösungs-Wandel :D


ciao Nicodius



//edit das mit dem augen geöffnet war sarkastisch :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:31 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