Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi String in Integer umwandeln. (https://www.delphipraxis.net/148533-string-integer-umwandeln.html)

checker1992 3. Mär 2010 20:26


String in Integer umwandeln.
 
Hallöchen...
ich möchte gern einen Funktionsgraph zeichnen. Dabei soll der Benutzer der Funktion selber eingeben können. Jetzt besteht das Problem, dass die eingebene Funktionsvorschrift ein String ist. Da diese nicht in Rechenoperationen verarbeitet werden können wandla ich die Eingabe in ein Integer um. Allerdings funktioniert dies leider auch nicht

Delphi-Quellcode:
 procedure TForm1.Button2Click(Sender: TObject);
var a, b,f,x,xn,xe,xo,yn,ye,yo,i: integer;
var ywerte, xwerte : array[0..20] of integer;
var s:STRING;
begin
s:=strtoint(edit1.Text);
xe:=160;
xo:=150;
ye:=140;
yo:=150;
x:=-5;
repeat
f:=s;
xn:=x*(xe-xo)+xo;
xwerte[x+6]:=xn;
yn:=f*(ye-yo)+yo;
ywerte[x+6]:=yn;
inc(x);
until x=5;
image1.Canvas.MoveTo(xwerte[1],ywerte[1]);
for i:=2 to 10 do begin
image1.Canvas.LineTo(xwerte[i],ywerte[i]);
end;
end;
... möchte ich das jetzt anwenden, kommt eine Fehlermeldung.
Hat jemand eine Lösung für mein Problem?

MFG

[edit=Matze][delphi]-Tag geschlossen. MfG, Matze[/edit]

igel457 3. Mär 2010 20:31

Re: String in Integer umwandeln.
 
So einfach geht das nicht, du benötigst einen Mathematik Parser (Hier im Forum suchenMathe Parser). Suche mal nach diesem Begriff.

Matze 3. Mär 2010 20:32

Re: String in Integer umwandeln.
 
Hallo, herzlich Willkommen!

schreibe zukünftig bitte genau wo welche Fehlermeldung kommt.

Delphi-Quellcode:
var s:STRING;
begin
s:=strtoint(edit1.Text);
Du hast "s" als "string" deklariert. Einem String kann man keinen Integer zuweisen. Wenn du den Wert als Integer haben willst, geht das so:

Delphi-Quellcode:
var s: Integer;
begin
  s := StrToInt(Edit1.Text);
Grüße, Matze

elyesa 3. Mär 2010 20:45

Re: String in Integer umwandeln.
 
hallo,

ja du weisst einen string einen integer zu in der zeile 6

Delphi-Quellcode:
s:= inttostr(edit1.text);
muss aber eindach
Delphi-Quellcode:
s:= edit1.text;
sein

und in der zeile 13 dann einem integer einen string zu

Delphi-Quellcode:
f:=s;
muss aber
Delphi-Quellcode:
f:=strtoint(s);
sein

hoffe konnte helfen

gruss
ismail

checker1992 3. Mär 2010 23:04

Re: String in Integer umwandeln.
 
Liste der Anhänge anzeigen (Anzahl: 1)
So ich habe den Code jetzt mal geändert nach dem ihr so super schnell Tipps gegeben hattet.

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var a, b,f,x,xn,xe,xo,yn,ye,yo,i: integer;
var ywerte, xwerte : array[0..20] of integer;
var s:STRING;
begin
s:=edit1.Text;
xe:=160;
xo:=150;
ye:=140;
yo:=150;
x:=-5;
repeat
f:=strtoint(s);
xn:=x*(xe-xo)+xo;
xwerte[x+6]:=xn;
yn:=f*(ye-yo)+yo;
ywerte[x+6]:=yn;
inc(x);
until x=5;
image1.Canvas.MoveTo(xwerte[1],ywerte[1]);
for i:=2 to 10 do begin
image1.Canvas.LineTo(xwerte[i],ywerte[i]);
end;
end;
Ich habe das ganze jetzt mal mit der Funktion 2*x versucht aufzurufen. Dabei bekomme ich folgende Fehlermeldung s. Attachment.
Woran liegt das jetzt bzw. was kann ich machen damit es funktioniert?

Mit freundlichen Früßen

Nikolas 3. Mär 2010 23:11

Re: String in Integer umwandeln.
 
Ein Integer ist eine ganze Zahl wie -3, 0 oder 42. "2*x" ist sicher keine ganz Zahl...
Einen Ausdruck wie "2*x" in eine function umzuwandeln ist nicht ganz einfach und da du noch nicht weisst, was ein Integer ist, solltest du dir vielleicht ein einfacheres Projekt suchen. Auf jeden Fall solltest du dir ein paar Threads übers Parsen anschauen, wie es dir schon der Igel vorgeschlagen hat.

olee 4. Mär 2010 00:24

Re: String in Integer umwandeln.
 
Liste der Anhänge anzeigen (Anzahl: 1)
[OT]
Einfach Krass... :shock:

Das jemand so viel von StrToInt erwarten würde ... oder das Programmieren so einfach sein könnte...

sowas hab ich noch nie erlebt :lol:
[/OT]

Also wenn du solche Funktionen ausrechnen willst, brauchst du - wie schon erwähnt - einen Mathe-Parser.

Ich hab mal einen angehängt, den habe ich vor ner weile aus langeweile in der Schule grad mal
zusammengezimmert und mit der zeit noch etwas verbessert.

Wenn du dir das anschaust wirst du wohl verstehen, das das nicht gerade ein Anfängerthema ist...

MFG

checker1992 4. Mär 2010 14:20

Re: String in Integer umwandeln.
 
Danke schön für die Antworten.
Das StrtoInt dafür vielleicht nicht gedacht ist, ist mir schon klar. Ich habe nur gedacht, dass dies funktionieren könnte. Denn gebe ich der Variable f (welche als Integer angelegt wird) den Wert 2*x oder auch x*x:
Delphi-Quellcode:
procedure test ()
var f:integer;
begin
...
f:=x*x
dann funktioniert das zeichnen auch. Deswegen dachte ich, dass die Umwandlung eines Funktionsstrings in einen Integer wert möglich sei. Allerdings scheint dies ja nicht der Fall zu sein, deswegen werde ich mich nun mal mit Parsen beschäftigen.

sirius 4. Mär 2010 15:28

Re: String in Integer umwandeln.
 
So ungewöhnlich, wie olee es bezeichnet, ist es gar nicht. Nur Delphi kann sowas nicht. Das ist kein Manko, sondern eher typisch für eine Compiler-Programmiersprache wie Delphi.
In Interpretersprachen, wie Matlab, Python, (php),... gibt es eine derartige Funktion, welche meist "eval" heißt.

(Und auf Vor- und Nachteile zwischen Interpreter- und Compilersprachen gehen wir jetzt mal nicht ein)

olee 5. Mär 2010 14:22

Re: String in Integer umwandeln.
 
[OT]
Vllt. gehst du nicht darauf ein aber ich :mrgreen:

Ich habe ja selbst eine Script Engine (RUTIS) entwickelt und das hat mir schon gezeigt das Compiler besser sind :P

Interpreter sind eher was für kleine Sachen - wie z.B. dieser Mathe-Parser :wink:
[/OT]
@checker1992:
Das mit dem Parsen könnte sich aber auch als etwas schwer erweisen...

Du solltest eigentlich recht leicht Informationen darüber finden und ich hoffe dir gelingt es :thumb:

Wenn du fragen hast -> Die :dp: heißt dich immer WILLKOMMEN :wink:

EDIT:
Du könntest dem thread mal einen etwas aussagekräftigeren Titel geben.
Dann könnten dir auch die richtigen Leute helfen (wobei die richtigen haben sich ja schon gemeldet^^)
Dazu musst du nur im ersten Post auf EDIT klicken und dann oben den Titel anpassen.
So etwas wie "Wie schreib ich einen Mathe-parser" usw. wär nicht schlecht

MFG


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