Witam. Chce zrobić program liczący wg wzoru ilość nitów przy sile ścinającej. Wyskakuje mi błąd z niezgodnością typów oraz z econverterror with messagge...
Jakiego wyniku oczekujesz kiedy mnożysz liczbę przez napis?
ENDZI922: nadawaj sensowne tagi dla swoich wątków. A także tematy opisujące problem. To że tam wpiszesz "POMOCY" nie sprawi, że nagle wszyscy rzucą się Tobie na ratunek. Nie musisz również na nas krzyczeć. Poprawiłem to, bo taki wrzask samym Caps Lockiem źle się czyta.
Wklejaj też kod w odpowiednich znacznikach i formatuj kod. Jeżeli nie umiesz tego sam to używaj http://olesio.eu/jcf - bo łatwiej odpowiadającym przekleić kod i sprawdzić niż dopatrywać się na screenie. A Dragon już Tobie napisał co jest źle. I wątek przenoszę do działu Newbie. Tam zadawaj pytania o podstawy.
Problemem jest deklaracja poniższych zmiennych:
const
p='3.14';
f='4000'
Są to łańcuchy znaków, a używasz ich tak, jakby zawierały wartości liczbowe; Po pierwsze zadeklaruj je jak normalne liczby zmiennoprzecinkowe:
const
p = 3.14;
f = 4000;
a po drugie sio do jakiegoś kursu Delphi, bo to są podstawy podstaw; A bez znajomości podstaw programowania, niczego więcej niż "hello world" nie napiszesz niestety;
PS: A jeśli jeszcze raz wstawisz obrazek z kodem, zamiast przekleić normalnie kod, to wątek wyląduje z hukiem w koszu; Marnujesz czas na obrazki, zamiast kilka razy kliknąć i pokazać kod jak należy.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,MATH;
type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Edit5: TEdit;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
m,d,k,n,p,f:real;
begin
try
m:=StrToFloat(Edit1.Text)
except
ShowMessage ('Dane muszą by liczbami');
exit;
end;
try
k:=StrToFloat(Edit1.Text)
except
ShowMessage ('Dane muszą by liczbami');
exit;
end;
try
d:=StrToFloat(Edit1.Text)
except
ShowMessage ('Dane muszą by liczbami');
exit;
end;
m:=strtofloat(edit1.text);
d:=strtofloat(edit2.Text);
k:=strtofloat(edit3.Text);
p:=3.14;
f:=4000;
n:=round((4*f)/(m*k*p*sqrt(d)));
Label6.Caption:='Ilosc nitow N=' + Formatfloat ('0.00',n);
end;
end.
Witam ponownie, przepraszam za zamieszanie, rzeczywiście nie mam pojęcia o programowaniu.. ale jednak muszę to zrobić. Pierwszy raz jestem na tym forum , nie wiedziałam, że są takie zasady , w każdym razie przepraszam wszystkich :)
teraz mam problem taki, że wyskakuje mi błąd , że "value asigned to d never used" i tak do zmiennej m i k równiez a poza tym nie dziala mi obsluga wyjątków tylko wyskakuje bład EconvertError , liczę na waszą pomoc .
Wywal to p
i użyj normalnej pi
http://www.efg2.com/Lab/Library/Delphi/MathFunctions/Constants.htm
zmienilam wszędzie na pi , teraz wgl nie chce liczyć nie odczytuje że pi =3.14
Wywal z deklaracji bo to jest stała globalna.
okej wywaliłam , liczy ale jest dalej ten bład że m , k i d nie są wgl uzyte nigdy i nie wyskakuje komunikat że kiedy wpisze ciąg znaków (tekst) zamiast liczb m= jhfhfhf i powinien wyskoczyc komunikat ze m musi być liczbą , tak się nie dzieje
Bo masz to wewnątrz try
, te konwersje po try
też wywal.
błąd o tym że m never used zniknąl lecz nadal nie chce pokazywać komunikatów podczas obłusgi wyjątków , wyskakuje tylko komunikat z programu a nie mój, oraz ten że błąd : "project1 raised exception class EconvertErrror with message "ww"(to wpisałam w pole gdzie jest m) is not a valid floating point value"
Odpal program bezpośrednio z dysku czyli exe.
komunikat po ang . "ww" is not a vaild floating point
value
Przy tym http://4programmers.net/Forum/1099168 kodzie i program odpalony bez Delphi?
biorę ten plik project1. exe otwiera sie okienko z programem i wyskakuje wlasnie to co wyzej po angielsku
nikt poza _13th_Dragon nie jest w stanie poradzić nic?
Skoro twierdzisz że odpalasz ten http://4programmers.net/Forum/1099168 program poza Delphi i twierdzisz iż nadal widzisz komunikaty wyjątków oznacza to tylko jedno: - "Chrzani waść".
Więc nic dziwnego że nikt nie może ci pomóc.
@Endzi922 - pokaż aktualny kod, bo teraz nie wiadomo jaki testujesz; Tylko nie zapomnij wstawić go w poście w znaczniki kolorujące składnię.