Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Edit.Text -> Einzelnen Wert abarbeiten (https://www.delphipraxis.net/159680-edit-text-einzelnen-wert-abarbeiten.html)

Elexarie 7. Apr 2011 17:30

Edit.Text -> Einzelnen Wert abarbeiten
 
Hallo Community,

vorab möchte ich der Administration ein Lob für dieses wunderbare Forum aussprechen, da ich hier, auch ohne registriert gewesen zu sein, eine Menge erfahren konnte. Nun registriere ich mich, weil ich eine Frage habe.

Es geht darum, dass ich die Quersumme berechnen soll. Mein Arbeitsblatt sagt mir zwar vor, ich solle mod und div verwenden, aber da sehe ich keinerlei Anhaltspunkt. Ich kenne die Quersumme alá "1234 = 10 -> 1+2+3+4"). Wieso also Divisionen vornehmen? Ich wollte jetzt eig. das Edit1.Text von links nach rechts abarbeiten, in ein Array schreiben und dann diese einzelnen Arrays miteinander addieren. Jetzt weiß ich aber nicht, wie ich an jeden einzelnen Char innerhalb des Strings im Editfeld komme. Würde "trim" helfen? Das habe ich schonmal gelesen.

Habt ihr Ideen, Vorschläge, Funktionen? (Bitte nur eine Funktion nennen, keinen Sourcecode, ich möchte es selber lösen).

Gibt es für Delphi auch eine Referenz, wie die von MSDN oder c++ - reference?

Mit freundlichen Grüßen,

André.

aurikel_Max 7. Apr 2011 17:35

AW: Edit.Text -> Einzelnen Wert abarbeiten
 
Zitat:

Zitat von Elexarie (Beitrag 1093718)
Jetzt weiß ich aber nicht, wie ich an jeden einzelnen Char innerhalb des Strings im Editfeld komme.

Delphi-Quellcode:
DeinEditFeld.Text[1]
-> erster Buchstabe

Elexarie 7. Apr 2011 17:37

AW: Edit.Text -> Einzelnen Wert abarbeiten
 
Zitat:

Zitat von aurikel_Max (Beitrag 1093719)
Zitat:

Zitat von Elexarie (Beitrag 1093718)
Jetzt weiß ich aber nicht, wie ich an jeden einzelnen Char innerhalb des Strings im Editfeld komme.

Delphi-Quellcode:
DeinEditFeld.Text[1]
-> erster Buchstabe

Das ist nicht wirklich so simpel oder? Aber ich habe mal gelernt, dass ein Array bei [0] anfängt. Ist es dann nicht hier auch so? :O

aurikel_Max 7. Apr 2011 17:38

AW: Edit.Text -> Einzelnen Wert abarbeiten
 
Zitat:

Zitat von Elexarie (Beitrag 1093721)
Zitat:

Zitat von aurikel_Max (Beitrag 1093719)
Zitat:

Zitat von Elexarie (Beitrag 1093718)
Jetzt weiß ich aber nicht, wie ich an jeden einzelnen Char innerhalb des Strings im Editfeld komme.

Delphi-Quellcode:
DeinEditFeld.Text[1]
-> erster Buchstabe

Das ist nicht wirklich so simpel oder? Aber ich habe mal gelernt, dass ein Array bei [0] anfängt. Ist es dann nicht hier auch so? :O

Da es ein String ist, ist [0] die Länge - wenn ich das richtig in Erinnerung habe.

patti 7. Apr 2011 17:39

AW: Edit.Text -> Einzelnen Wert abarbeiten
 
Willkommen als aktiver User in der DP ;)

Also: Als erstes wandelst du den String aus deinem Edit-Feld in eine Integer um (StrToInt).
Mit dieser Zahl kannst du dann das Rechnen anfangen:

Code:
1. 1234 mod 10 = 4 (als Ergebnis merken)
2. 1234 div 10 = 123
3. 123  mod 10 = 3 (zum Ergebnis addieren)
4. 123  div 10 = 12
.
.
.
Das Ganze in eine Schleife verpackt - fertig ;)

Ich hoffe, dadurch wird dir das Prinzip etwas klarer ;)

Edit: Hier noch der Link zur DP-Reference

Elexarie 7. Apr 2011 17:43

AW: Edit.Text -> Einzelnen Wert abarbeiten
 
Zitat:

Zitat von Elexarie (Beitrag 1093721)
Zitat:

Zitat von aurikel_Max (Beitrag 1093719)
Zitat:

Zitat von Elexarie (Beitrag 1093718)
Jetzt weiß ich aber nicht, wie ich an jeden einzelnen Char innerhalb des Strings im Editfeld komme.

Delphi-Quellcode:
DeinEditFeld.Text[1]
-> erster Buchstabe

Das ist nicht wirklich so simpel oder? Aber ich habe mal gelernt, dass ein Array bei [0] anfängt. Ist es dann nicht hier auch so? :O

Okay. Habs schon getestet.

Zitat:

Zitat von patti (Beitrag 1093724)
Willkommen als aktiver User in der DP ;)

Also: Als erstes wandelst du den String aus deinem Edit-Feld in eine Integer um (StrToInt).
Mit dieser Zahl kannst du dann das Rechnen anfangen:

Code:
1. 1234 mod 10 = 4 (als Ergebnis merken)
2. 1234 div 10 = 123
3. 123  mod 10 = 3 (zum Ergebnis addieren)
4. 123  div 10 = 12
.
.
.

Das mache ich dann solange, bis ich beim letzten Char bin? - Okay. Dann habe ich jetzt zwei Methoden, einmal mit einer for - Schleife und einmal mit ddem mod / div.

Danke erstmal. Melde mich mit dem fertigen Sourcecode nachher nochmal, damit ihr kritisieren könnt. Brauche jeden Anhaltspunkt zur Verbesserung. Danke vorab.

Das Ganze in eine Schleife verpackt - fertig ;)

Ich hoffe, dadurch wird dir das Prinzip etwas klarer ;)

Sir Rufo 7. Apr 2011 17:54

AW: Edit.Text -> Einzelnen Wert abarbeiten
 
Das mit dem DIV und Mod macht man nicht bis zum letzten Char, sondern bis bei dem DIV eine 0 als Wert übrig bleibt

Elexarie 7. Apr 2011 17:59

AW: Edit.Text -> Einzelnen Wert abarbeiten
 
Code:
while (EValue <> 0)
  do
      begin
           Crosstotal := 0;
           Crosstotal := Crosstotal + (EValue mod 10);
           Crosstotal := EValue div 10;
      end;
EValue : EditFeld
Crosstotal : Quersumme

Was fehlt da jetzt?! :?:

DeddyH 7. Apr 2011 18:10

AW: Edit.Text -> Einzelnen Wert abarbeiten
 
Du setzt innerhalb der Schleife CrossTotal immer wieder auf 0. Außerdem wird EValue ja niemals verändert, da kannst Du bis zum Sanktnimmerleinstag warten, bis die Schleifenbedingung erfüllt ist.

shmia 7. Apr 2011 18:31

AW: Edit.Text -> Einzelnen Wert abarbeiten
 
Du hast grundsätzlich zwei verschiedene Möglichkeiten:
1.) jedes einzelne Zeichen im String in eine Zahlumwandeln (mit funktion Ord()) und die Einzelwerte addieren
2.) den String im Gesamten in eine Zahl umwandeln (mit Funktion StrToInt()) und
dann mit Mod 10 und Div 10 die Reste zusammenaddieren.

Methode 1.) ist einfacher aber du sollst ja die etwas schwerere Methode 2.) benützen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:48 Uhr.
Seite 1 von 2  1 2      

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