![]() |
einzelne Zeichen eines Strings einlesen
Hallo, ich möchte gern die Quersumme einer Zahl berechnen. Dazu müßte ich wissen, wie man von einem String jedes einzelne Char ausließt. Kann mir jemand einen Tip geben, welche Möglichkeiten es da bei delphi gibt?
gruß malibu! |
Re: einzelne Zeichen eines Strings einlesen
In einer Schleife kannst Du mit
Delphi-Quellcode:
auf das aktuelle Zeichen im String zugreifen.
DeinString[Laufvariable]
|
Re: einzelne Zeichen eines Strings einlesen
alles klar danke!
|
Re: einzelne Zeichen eines Strings einlesen
habe den folgenden Algorithmus geschrieben. Er funktioniert um die Quersumme zu berechnen. Allerdings ruft er eine Hand voll Fehlermeldungen aus wobei das Ergebnis immer richtig ist.
Delphi-Quellcode:
etwas verwundert bin ich über die erste For-Schleife
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Label1: TLabel; Edit2: TEdit; Label2: TLabel; Button1: TButton; Label3: TLabel; Label4: TLabel; procedure Button1Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; a:Array of integer; implementation {$R *.dfm} procedure Quersumme; var s:String; c:char; x1,x2,v:integer; begin with form1 do begin s:=Edit1.Text; x1:=length(s); label3.caption:=IntToStr(x1); SetLength(a,x1); for x2:=1 to x1 do begin a[x2]:=StrToInt(s[x2]); end; for x2:=0 to x1 do begin v:=v+a[x2]; end; label4.Caption:=IntToStr(v); end; end; procedure TForm1.Button1Click(Sender: TObject); begin Quersumme; end; end.
Delphi-Quellcode:
hätte x am liebsten 0 zugewiesen und die Abbruchbedingung x-1.Mit der Begründung, dass das erste Array-element ja eigentlich a[0] ist aber wahrscheinlich ist das egal ob die Zahlenkette bei a[0] oder [1] anfängt. Im Grunde habe ich das so gemacht weil ich auf s[0} nicht zugreifen darf.
for x2:=1 to x1 do
begin a[x2]:=StrToInt(s[x2]); end; Meine Frage, gibt es ne Musterlösung die weniger problematisch ist? |
Re: einzelne Zeichen eines Strings einlesen
Versuch es mal damit (nur schnell dahingetippselt):
Delphi-Quellcode:
function Quersumme(const s: string): integer;
var i: integer; begin Result := -1; if not TryStrToInt(s,Result) then exit; Result := 0; for i := 1 to Length(s) do Result := Result + StrToInt(s[i]); end; |
Re: einzelne Zeichen eines Strings einlesen
Moin, Moin,
mal zwei Anmerkungen dazu: Schreibe "Quersumme" als Methode, dann ist das "with Form1 do begin" überflüssig. Die Indizierung eines String beginnt immer mit 1 !!! // na und was DeddyH schreibt, ist natürlich eine kleine Optimierung (was auch darauf hinweist, dass die Berechnung von der Anzeige getrennt werden sollte - prinzipiell zumindest... |
Re: einzelne Zeichen eines Strings einlesen
noch kurz zwei fragen, in der Funktion verwendet DeddyH die anweisung Result:=-1, was hat es damit auf sich? Und was ist mit methode gemeint? Eine Komponenteneigenschaft wwie Form1.Button1click?? Ist es möglich in Delphi auch OOP zu programmieren?
|
Re: einzelne Zeichen eines Strings einlesen
Ich setze Result (= Rückgabewert einer Funktion) auf -1, damit man prüfen kann, ob der übergebene String auch in eine Zahl gewandelt werden kann. Ist das nicht der Fall, ist die Quersumme dann eben negativ. Ein Methode ist vereinfacht ausgedrückt eine Prozedur oder Funktion, die zu einer Klasse gehört. Somit erübrigt sich auch eine Antwort auf die Frage nach OOP in Delphi ;)
|
Re: einzelne Zeichen eines Strings einlesen
Zitat:
Hier wird als Standard -1 gesetzt, so daß man ausserhalb das Ergebnis auf -1 prüfen kann und weiss dass etwas schiefgelaufen ist. Zitat:
Zitat:
Aber wenn du nach Methode fragst, empfehle ich dir erst einmal mehr über OOP zu lesen. |
Re: einzelne Zeichen eines Strings einlesen
Okay es sind also drei Anweisungen. Bin etwas durcheinander gekommen, da ich dachte, man trennt Steueranweisungen immer mit begin und end. Interessant zu wissen, das es zulässig ist. Im Prinzip habe ich Grundlagenerfahrung in OOP mit JAVA. Delphi finde ich etwas undurchlässig dies bezüglich. Wenig literatur etc. Methoden sind mir bekannt darum habe ich ja gefragt ob mit delphi oop möglich ist.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz