AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

String in Integer umwandeln.

Ein Thema von checker1992 · begonnen am 3. Mär 2010 · letzter Beitrag vom 5. Mär 2010
Antwort Antwort
checker1992

Registriert seit: 3. Mär 2010
7 Beiträge
 
#1

String in Integer umwandeln.

  Alt 3. Mär 2010, 20:26
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]
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#2

Re: String in Integer umwandeln.

  Alt 3. Mär 2010, 20:31
So einfach geht das nicht, du benötigst einen Mathematik Parser (Hier im Forum suchenMathe Parser). Suche mal nach diesem Begriff.
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: String in Integer umwandeln.

  Alt 3. Mär 2010, 20:32
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
  Mit Zitat antworten Zitat
elyesa

Registriert seit: 15. Apr 2005
8 Beiträge
 
#4

Re: String in Integer umwandeln.

  Alt 3. Mär 2010, 20:45
hallo,

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

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

und in der zeile 13 dann einem integer einen string zu

f:=s; muss aber f:=strtoint(s); sein

hoffe konnte helfen

gruss
ismail
  Mit Zitat antworten Zitat
checker1992

Registriert seit: 3. Mär 2010
7 Beiträge
 
#5

Re: String in Integer umwandeln.

  Alt 3. Mär 2010, 23:04
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
Miniaturansicht angehängter Grafiken
fehler_102.png  
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#6

Re: String in Integer umwandeln.

  Alt 3. Mär 2010, 23:11
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.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

Registriert seit: 16. Feb 2008
Ort: Boppard
540 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: String in Integer umwandeln.

  Alt 4. Mär 2010, 00:24
[OT]
Einfach Krass...

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

sowas hab ich noch nie erlebt
[/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
Angehängte Dateien
Dateityp: zip function_plotter_602.zip (235,0 KB, 26x aufgerufen)
Björn Zeutzheim
Codename: Performancepumpe
  Mit Zitat antworten Zitat
checker1992

Registriert seit: 3. Mär 2010
7 Beiträge
 
#8

Re: String in Integer umwandeln.

  Alt 4. Mär 2010, 14:20
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.
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: String in Integer umwandeln.

  Alt 4. Mär 2010, 15:28
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)
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von olee
olee

Registriert seit: 16. Feb 2008
Ort: Boppard
540 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: String in Integer umwandeln.

  Alt 5. Mär 2010, 14:22
[OT]
Vllt. gehst du nicht darauf ein aber ich

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

Interpreter sind eher was für kleine Sachen - wie z.B. dieser Mathe-Parser
[/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

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

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
Björn Zeutzheim
Codename: Performancepumpe
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:58 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