Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   problem: arrays u subroutine (https://www.delphipraxis.net/85043-problem-arrays-u-subroutine.html)

sowieso 25. Jan 2007 09:48


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

Angel4585 25. Jan 2007 09:50

Re: ganz verzweifelt... kann jemand helfen?
 
kannst du bitte einen aussagekräftigeren Titel wählen? :roll:

sowieso 25. Jan 2007 09:55

Re: problem: arrays u subroutine
 
:oops:
besser?

Angel4585 25. Jan 2007 10:02

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.

sowieso 25. Jan 2007 10:14

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
...

Tormentor32 25. Jan 2007 10:15

Re: problem: arrays u subroutine
 
Was nimmst du als Trennzeichen Komma oder Punkt? Versuchs mal andersrum!

sowieso 25. Jan 2007 10:18

Re: problem: arrays u subroutine
 
welche trennzeichen meinst du??
zwischen den variabeln oder bei den zahlen?

sowieso 25. Jan 2007 10:21

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"?

Tormentor32 25. Jan 2007 10:24

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)

sowieso 25. Jan 2007 10:27

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...

Tormentor32 25. Jan 2007 10:31

Re: problem: arrays u subroutine
 
Was steht denn, wenn du das Programm startest in den edits?

ste_ett 25. Jan 2007 10:32

Re: problem: arrays u subroutine
 
Wahrscheinlich hast du nichts im Editfeld stehen, oder den Standardtext "EditX". :)
Das sind natürlich keine gültigen Zahlen!

sowieso 25. Jan 2007 10:40

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.

p0w3r5tr34m3r 25. Jan 2007 10:43

Re: problem: arrays u subroutine
 
teste es doch einfach durch

Delphi-Quellcode:
var
  i: integer;
begin
  for i := low(getal) to high(getal) do
    memo1.lines.add('getal['+IntToStr(i)+'] '+FloatToStr(getal[i]));
end;
Mit freundlichen Grüßen

sowieso 25. Jan 2007 10:53

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?

Angel4585 25. Jan 2007 10:54

Re: problem: arrays u subroutine
 
es hiess doch grad noch "getallen" oder? :gruebel:

p0w3r5tr34m3r 25. Jan 2007 10:58

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

sowieso 25. Jan 2007 11:08

Re: problem: arrays u subroutine
 
hm.... jetzt wenn ich das mit den "getallen" mache, dann steht da immer noch "undeclared identifier memo1."

p0w3r5tr34m3r 25. Jan 2007 11:10

Re: problem: arrays u subroutine
 
dann ersetz memo1 mit dem namen des Memo-Feldes

sowieso 25. Jan 2007 11:11

Re: problem: arrays u subroutine
 
das memo feld heißt memo1 :roll:

Tormentor32 25. Jan 2007 11:13

Re: problem: arrays u subroutine
 
dann zeig mal deinen Quelltext her

Angel4585 25. Jan 2007 11:14

Re: problem: arrays u subroutine
 
Zitat:

Zitat von Tormentor32
dann zeig mal deinen Quelltext her

(Den kompletten Deklarationsabschnitt der oben steht bitte :) )

sowieso 25. Jan 2007 11:17

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.

Tormentor32 25. Jan 2007 11:21

Re: problem: arrays u subroutine
 
Delphi-Quellcode:
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.
Du musst das ganze natürlich in eine prozedur reinschreiben...

sowieso 25. Jan 2007 11:33

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.

Tormentor32 25. Jan 2007 11:41

Re: problem: arrays u subroutine
 
schau mal auf www.dsdt.info unter Tutorials bzw Grundlagen, da wirst du einiges finden. Zu deinem fixval kann ich nichts sagen, aber such doch mal hier im Forum danach. Hier im Forum suchenfixval

ansonsten sollte Hier im Forum suchenTedit AND Zahlen was ausspucken.

Gruß

sowieso 25. Jan 2007 11:48

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:

Angel4585 25. Jan 2007 11:52

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 ;)

sowieso 25. Jan 2007 11:55

Re: problem: arrays u subroutine
 
hm.. na dann werd ich jetzt wohl mal weiterprobieren...

learning by doing kann aber auch echt frustrierend sein :pale:

hoika 25. Jan 2007 13:13

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