![]() |
problem: arrays u subroutine
also, ich schlag mich jetzt seit n paar wochen (gezwungenermaßen) mit delphi rum... ich verzweifel an den kleinsten aufgaben.
naja, vielleicht kann mir hier jemand weiterhelfen? ich hab zwei probleme: 1) ich habe ein eindimensionales array vom type real und will, dass die zahlen für das array aus drei editboxen eingelesen werden. ich dachte, dass ich dann einfach sowas hier machen muss: getal[1]:= strtofloat(edit1.text); getal[2]:= strtofloat(edit2.text); tja... das scheint aber falsch zu sein u ich weiß einfach nicht, wies richtig sein soll. problem nummer2) ich hab sowas ähnliches wie nen taschenrechner gemacht um kilometerangaben und zeit zu berechnen. ich hab als subroutine ne kontrolle eingebaut für den fall, dass eingegebene zahlen kleiner oder gleich an null sind. jetzt steht im auftrag aber auch noch, dass ich was einbauen soll, für den fall dass buchstaben ins edit gegeben werden (das program soll dann nicht crashen). BITTE helft mir |
Re: ganz verzweifelt... kann jemand helfen?
kannst du bitte einen aussagekräftigeren Titel wählen? :roll:
|
Re: problem: arrays u subroutine
:oops:
besser? |
Re: problem: arrays u subroutine
jupp besser, aber ersteinmal Herzlich Willkommen in der DP :party:
also zu a) kommt denn eine Fehlermeldung wenn du das machst? Wie hast du dein Array deklariert? b) -Du kannst auch einfach Buchstaben un sonstige Zeichen abfangen die nicht rein dürfen -Oder/Und du prüfst mit der Funktion TryStrToFloat ob es eine korrekte Kommazahl ist. |
Re: problem: arrays u subroutine
danke.
also bei a) ist das problem, dass dann so n neues fenster kommt mit "debugger exception notification"... da steht dann noch was mit "not a valid floating point...". und so sieht das ganze bei mir aus: var Form1: TForm1; getallen: array [1..3] of real; inhoud1: string; inhoud2: string; inhoud3: string; //inhoud1,2,3, soll später beim buttonclick im memo angezeigt werden implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin getallen[1]:= strtofloat(edit1.text); getallen[2]:= strtofloat(edit2.text); getallen[3]:= strtofloat(edit3.text; end; procedure TForm1.Button1Click(Sender: TObject); begin ... |
Re: problem: arrays u subroutine
Was nimmst du als Trennzeichen Komma oder Punkt? Versuchs mal andersrum!
|
Re: problem: arrays u subroutine
welche trennzeichen meinst du??
zwischen den variabeln oder bei den zahlen? |
Re: problem: arrays u subroutine
und bei b)
ich hab gehört, dass man da auch was mit fixval einbauen kann? oder wie kann ich ansonsten die sachen "abfangen"? |
Re: problem: arrays u subroutine
Ich meine wie sieht deine Zahl aus
12,6473 oder 12.6473 es kann evtl. daran liegen (muss es aber nicht) |
Re: problem: arrays u subroutine
ich hab ja noch gar keine zahl im programm, da diese meldung ja schon kommt wenn ich f9 drücke. das programm öffnet dann gar nicht...
|
Re: problem: arrays u subroutine
Was steht denn, wenn du das Programm startest in den edits?
|
Re: problem: arrays u subroutine
Wahrscheinlich hast du nichts im Editfeld stehen, oder den Standardtext "EditX". :)
Das sind natürlich keine gültigen Zahlen! |
Re: problem: arrays u subroutine
oh ja, ich glaub das problem war tatsächlich, dass die edits komplett leer waren u ich dann bei formcreate direkt gesagt hab, dass er die "zahlen" nehmen soll aus den edits.
ich hab das stück jetzt einfach unter den buttonclick geschrieben und wenn ich die edits jetzt mit zahlen fülle u auf den button klicke, dann erscheint das auch im memo, so wie ich wollte. meine frage ist jetzt, ob ich die zahlen aus dem edit jetzt auch wirklich in meinem array habe?? var Form1: TForm1; getallen: array [1..3] of real; implementation {$R *.dfm} procedure TForm1.Button3Click(Sender: TObject); begin getallen[1]:= strtofloat(edit1.text); getallen[2]:= strtofloat(edit2.text); getallen[3]:= strtofloat(edit3.text); memo1.lines.add (edit1.text + edit2.text + edit3.text) end; end. |
Re: problem: arrays u subroutine
teste es doch einfach durch
Delphi-Quellcode:
Mit freundlichen Grüßen
var
i: integer; begin for i := low(getal) to high(getal) do memo1.lines.add('getal['+IntToStr(i)+'] '+FloatToStr(getal[i])); end; |
Re: problem: arrays u subroutine
ist mir jetzt echt n bisschen peinlich, weil ich mich hier als kompletter idiot oute, aber ich find das alles echt schwer u hab sooo viele fragen.
naja... aber den code den du gerade geschrieben hast, wenn ich den anfüge, dann kennt er die variabel "getal" nicht (obwohl er das ja eigentlich sollte, weil das doch mein name von der array ist) u bei memo1.lines.add (..) streikt er auch. kann man niht aus dem code herauslesen, ob der die zahlen von den edits jetzt wirklich im array drin hat? |
Re: problem: arrays u subroutine
es hiess doch grad noch "getallen" oder? :gruebel:
|
Re: problem: arrays u subroutine
ja sorry :)
mich überkam gerade die schreibsucht, da habe ich halt ein paar Buchstaben vergessen. es muss natürlich getallen heißen anstelle von getal |
Re: problem: arrays u subroutine
hm.... jetzt wenn ich das mit den "getallen" mache, dann steht da immer noch "undeclared identifier memo1."
|
Re: problem: arrays u subroutine
dann ersetz memo1 mit dem namen des Memo-Feldes
|
Re: problem: arrays u subroutine
das memo feld heißt memo1 :roll:
|
Re: problem: arrays u subroutine
dann zeig mal deinen Quelltext her
|
Re: problem: arrays u subroutine
Zitat:
|
Re: problem: arrays u subroutine
deklarationstext?
ach, ich kopier euch einfach mal alles... :wink: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button2: TButton; Button3: TButton; Memo2: TMemo; procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; getallen: array [1..3] of real; implementation {$R *.dfm} procedure TForm1.Button3Click(Sender: TObject); begin getallen[1]:= strtofloat(edit1.text); getallen[2]:= strtofloat(edit2.text); getallen[3]:= strtofloat(edit3.text); memo2.lines.add (edit1.text + edit2.text + edit3.text) end; var i: integer; begin for i:= low(getallen) to high(getallen) do memo1.lines.add('getallen['+IntToStr(i)+'] '+FloatToStr(getallen[i])); end; end. |
Re: problem: arrays u subroutine
Delphi-Quellcode:
Du musst das ganze natürlich in eine prozedur reinschreiben...
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button2: TButton; Button3: TButton; Memo2: TMemo; procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; getallen: array [1..3] of real; implementation {$R *.dfm} procedure TForm1.Button3Click(Sender: TObject); var i: integer; begin getallen[1]:= strtofloat(edit1.text); getallen[2]:= strtofloat(edit2.text); getallen[3]:= strtofloat(edit3.text); //memo2.lines.add (edit1.text + edit2.text + edit3.text) for i:= low(getallen) to high(getallen) do memo1.lines.add('getallen['+IntToStr(i)+'] '+FloatToStr(getallen[i])); end; end. |
Re: problem: arrays u subroutine
ok... das funktioniert.
aber sagt mal, wie bring ich mir das alles denn am besten bei?? bei mir ist das alles nur ein einziges wirrwarr... gibt es nicht immer so standards, auf die man achten muss?? ach u wie ist das jetzt noch gleich mit dem fixval? soll ich einfach mal meinen broncode von der aufgabe hier reinkopieren? ich blick nämlich überhaupt gar nicht, wo ich so ne kontrolle einbauen könnte. |
Re: problem: arrays u subroutine
schau mal auf
![]() ![]() ansonsten sollte ![]() Gruß |
Re: problem: arrays u subroutine
hm... ich werd jetzt mal die seite durchforsten und ansonsten versuch ichs nochmal hier mit meinen fragen :wink:
aber habt ihr nicht n paar persönliche tipps für die rangehensweise oder so? :gruebel: |
Re: problem: arrays u subroutine
schau dir einfach mal Quelltexte an und mach dir Gedanken darüber was da passiert, dann wirst du den Aufbau denke ich recht schnell verstehen.
Ich denke ansonsten hilft da wohl nur Learing by Doing ;) |
Re: problem: arrays u subroutine
hm.. na dann werd ich jetzt wohl mal weiterprobieren...
learning by doing kann aber auch echt frustrierend sein :pale: |
Re: problem: arrays u subroutine
Hallo,
weil deine Variable GetAllen heisst. Zum Testen setzt du nen breakpoint nach dem letzten StrToFloat (mit F5), dann Cursor auf eine freie Stelle im Editor Strg+F5 und GetAllen,r (jaja, Minus r). Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:41 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-2025 by Thomas Breitkreuz