Ĺadny brzuch
piszę sobie kalkulator tzn... skączyłem pisać a kompilacja też przebiega pomyślnie ale kiedy np wcisnę + lub jakąś opcję oprócz liczb to wyskakuje mi error
" Project Projekt1.exe raised exception class EAccessVioolation with message 'Acces violation at address 0046D8AF in module 'Projekt.exe'. Read of address 0000000'. Process stoped. Use Step or Run to Continue."
jak ktoś był by tak miły i pokazał mi błąd gdzie popełniłem to naprawdę mi pomoze, męcze się już nad tym już 3 doby i nic... nie mogę poradzić może trzeba włączyć jakąś opcjie lub coś dopisać bo źródło tylko podpiąłem pod buttony
to jest bardzo pilne bo w sobotę musze mieć zrobione ale z takim tępie jak do tej pory to robie to napewno tego nie zrobie więc proszę was o pomoc :lol:
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm4 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Button11: TButton;
Button12: TButton;
Button13: TButton;
Button14: TButton;
Button15: TButton;
Button16: TButton;
Button17: TButton;
Button18: TButton;
Button19: TButton;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button16Click(Sender: TObject);
procedure Button17Click(Sender: TObject);
procedure Button18Click(Sender: TObject);
procedure Button19Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
{$R *.DFM}
procedure TForm4.Button1Click(Sender: TObject);
begin
edit1.Text := edit1.Text + '1';
end;
procedure TForm4.Button2Click(Sender: TObject);
begin
edit1.Text := edit1.Text + '2';
end;
procedure TForm4.Button3Click(Sender: TObject);
begin
edit1.Text := edit1.Text + '3';
end;
procedure TForm4.Button4Click(Sender: TObject);
begin
edit1.Text := edit1.Text + '4';
end;
procedure TForm4.Button5Click(Sender: TObject);
begin
edit1.Text := edit1.Text + '5';
end;
procedure TForm4.Button6Click(Sender: TObject);
begin
edit1.Text := edit1.Text + '6';
end;
procedure TForm4.Button7Click(Sender: TObject);
begin
edit1.Text := edit1.Text + '7';
end;
procedure TForm4.Button8Click(Sender: TObject);
begin
edit1.Text := edit1.Text + '8';
end;
procedure TForm4.Button9Click(Sender: TObject);
begin
edit1.Text := edit1.Text + '9';
end;
procedure TForm4.Button10Click(Sender: TObject);
begin
edit1.Text := edit1.Text + '0';
end;
procedure TForm4.Button11Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'.';
end;
procedure TForm4.Button12Click(Sender: TObject);
var a,b,wynik:real;
pomocnicza:integer;
napis:string;
begin
val(edit1.text,a,pomocnicza); {zamiana napisu na liczbe}
val(label1.caption,b,pomocnicza);
wynik:=a;
case label2.Caption[1] of
'+' : wynik:=a+b;
'-' : wynik:=a-b;
'*' : wynik:=a*b;
':' : wynik:=a/b;
end;
label2.Caption:='=';
str(wynik:7:5,napis); {zamiana liczby na napis}
label1.caption:=napis;
end;
procedure TForm4.Button13Click(Sender: TObject);
begin
Button12Click(sender); {obliczmy to co jest widoczne}
label2.Caption:='+';
edit1.Text:='';
end;
procedure TForm4.Button14Click(Sender: TObject);
begin
Button12Click(sender);
label2.Caption:='-';
edit1.Text:='';
end;
procedure TForm4.Button15Click(Sender: TObject);
begin
Button12Click(sender);
label2.Caption:='*';
edit1.Text:='';
end;
procedure TForm4.Button16Click(Sender: TObject);
begin
Button12Click(sender);
label2.Caption:=':';
edit1.Text:='';
end;
procedure TForm4.Button17Click(Sender: TObject);
begin
edit1.Text:='';
label1.Caption:='0';
label2.Caption:='';
end;
procedure TForm4.Button18Click(Sender: TObject);
begin
edit1.Text:='';
end;
procedure TForm4.Button19Click(Sender: TObject);
begin
halt;
end;
end.
Asdef www.kanalia.toya.net.pl
Co do błęu - to u mnie taki narazie nie wyskakuje, ale sam program średnio działa.
I mam radę - zamiast Str i Val lepiej stosuj FloatToStr i StrToFloat - są znacznie wygodniejsze :)
np. zamiana czegoś co jest w Edit na liczbę rzeczywistą to StrToFloat(Edit1.Text)
ICQ : 245-363-570
to jak mówisz że u ciebie nie ma błędu to dlaczego u mnie jest chyba coś źle musiałem zrobić[:/] pomijająć, średnie działanie programu:P
Asdef www.kanalia.toya.net.pl
Przy IntToStr powinno to-to wyglądać tak:
procedure TForm4.Button11Click(Sender: TObject); begin edit1.Text:=edit1.Text+','; end;
]==][::::::::::::::::::::::::>
:! Nie tykać nawet kijem długim na pięć metrów :!
Poza tym - niech żyją moderatorzy :P
cytat:Asdef napisał:
to jak mówisz że u ciebie nie ma błędu to dlaczego u mnie jest chyba coś źle musiałem zrobić[:/] pomijająć, średnie działanie programu:P
Napisz co masz wpisane do Label1, Label2 i Edit1 oraz podaj sekwencje klawiszy po których wywala Ci ten błąd. Może tak uda się wywalić program u mnie :)
ICQ : 245-363-570
cytat:Oxi napisał:
Napisz co masz wpisane do Label1, Label2 i Edit1 oraz podaj sekwencje klawiszy po których wywala Ci ten błąd. Może tak uda się wywalić program u mnie :)
Label1 <----- liczby liczba początkowa tzn caption 0
Label2 <----- znaki tu nie ma nic w caption
edit1.text nie ma nic pole puste
i teraz tak np... wciskam sobie 2 następnie próbuje kliknąć w + lub inny znak wyskakuje mi błąd ten co cytowałem error[...]
a wskazuje mi na tą linie "case label2.Caption[1]" of to tak jak by było coś źle powiązane [:/] tylko ten error jest w formie komunikatu nie w delhi w formie błędów
oraz ten sam błąd pojawia się przy znaku =
Asdef www.kanalia.toya.net.pl
cytat:Asdef napisał:
Label2 <----- znaki tu nie ma nic w caption
No i już wiadomo dlaczego wyskakuje Ci błąd (i dlaczego mi nie wyskakiwał) :)
Label2.Caption na początku jest puste - a w procedurze obliczającej działanie odwołujesz się do label2.Caption[1] - a tym samym "wyłazisz" poza dozwolony zakres i program się wywala...
ICQ : 245-363-570
cytat:Oxi napisał:
No i już wiadomo dlaczego wyskakuje Ci błąd (i dlaczego mi nie wyskakiwał) :)
Label2.Caption na początku jest puste - a w procedurze obliczającej działanie odwołujesz się do label2.Caption[1] - a tym samym "wyłazisz" poza dozwolony zakres i program się wywala...
hehehe ludzka tempota nie zna granic:lol:
Ps. jeszcze raz dzięki:P
Asdef www.kanalia.toya.net.pl
cytat:Asdef napisał:
hehehe ludzka tempota nie zna granic:lol:
Cóż, mi się coś właśnie przydarzyło przy tworzeniu funkcji RUN w moim edytorku pascala. Otóż chciałem nieprawidłowo tworzyć string z nazwą pliku EXE z wynikiem. Błędy się zawsze zdarzają. Tylko jak masz BARDZO DUŻO samozaparcia stworzysz całkowicie idiotoodporny program. Wiem coś o tym. Moi kumple mieszali z moim softem robiąc rzeczy o których JA za Chiny Ludowe bym nie pomyślał. A taki błędzik jak u ciebie to w sumie niewiele. Ale jak wkurza!
]==][::::::::::::::::::::::::>
:! Nie tykać nawet kijem długim na pięć metrów :!
Poza tym - niech żyją moderatorzy :P
cytat:chomik napisał:
Błędy się zawsze zdarzają. Tylko jak masz BARDZO DUŻO samozaparcia stworzysz całkowicie idiotoodporny program.
Zgadza się - przy jakimś większym programie praktycznie niemożliwe jest uniknięcie błędów.
Co do idiotoodporności to też czasem ciężko przewidzieć wszystkie możliwości - już nie pamiętam dokładnie o co wtedy chodziło ale kiedyś miałem taki problem i jak w końcu zobaczyłem w jaki sposób user obsługuje program to zaliczyłem totalny opad szczeny :lol:
A co do błędów to najbardziej znienawidzony przezemnie to właśnie EAccessVioolation. U Asdefa wyskakiwał bezpośrednio w linii gdzie był błąd - ale czasem jak się gdzieś niechcący "pomaże" po pamięci to ten błąd może wywalić program np. w linijce a:=1 - i wtedy zaczyna się zabawa ze znajdywaniem prawdziwego miejsca błędu... :roll:
ICQ : 245-363-570
e tam AccessVioolation to mój ulubiony błąd :D Dobrze że Borland dał nam dobre programy do wyszukiwania błędów, ale niestety nie da wyszukać wszystkich błędów w dużych aplikacjach.
//----------------------
z_forum_experta@beldzio.com
www.beldzio.com
www.beldzio.com/forum
gg :3183960
cytat:Bełdzio napisał:
e tam AccessVioolation to mój ulubiony błąd :D Dobrze że Borland dał nam dobre programy do wyszukiwania błędów, ale niestety nie da wyszukać wszystkich błędów w dużych aplikacjach.
No właśnie - niestety...
A co do AccessViolation to chyba jesteś masochistą ;)
Szukanie źródła błędu AccessViolation w module mającym kilka tysięcy linii kodu - w którym jest od groma operacji na wskaźnikach i tablicach jest średnią przyjemnością - tym bardziej gdy program wywala w zupełnie innym miejscu niż jest błąd :ceyes:
ICQ : 245-363-570
że tak głupi spytam co to jest za błąd EAccessVioolation
Ps. no co dopiero zaczynam:cheesy:
Asdef www.kanalia.toya.net.pl
cytat:Asdef napisał:
że tak głupi spytam co to jest za błąd EAccessVioolation
AccessViolation to błąd ochrony dostępu. Występuje najczęściej gdy "wyjedziesz" indeksem talbicy poza dozwolony zakres (tak jak to było w Twoim przypadki) lub odwołasz się do nieistniejącego obiektu - np. zadeklarujesz jakiś obiekt ale nie utworzysz go przy pomocy Create. Powodów może być więcej - ale to są chyba najczęstsze.
Generalnie chodzi o to, że ktoś pomazał gdzieś na chama po pamięci ;)
ICQ : 245-363-570
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
" Project Projekt1.exe raised exception class EAccessVioolation with message 'Acces violation at address 0046D8AF in module 'Projekt.exe'. Read of address 0000000'. Process stoped. Use Step or Run to Continue."
jak ktoś był by tak miły i pokazał mi błąd gdzie popełniłem to naprawdę mi pomoze, męcze się już nad tym już 3 doby i nic... nie mogę poradzić może trzeba włączyć jakąś opcjie lub coś dopisać bo źródło tylko podpiąłem pod buttony
to jest bardzo pilne bo w sobotę musze mieć zrobione ale z takim tępie jak do tej pory to robie to napewno tego nie zrobie więc proszę was o pomoc :lol:
unit Unit4;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm4 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Button10: TButton;
Button11: TButton;
Button12: TButton;
Button13: TButton;
Button14: TButton;
Button15: TButton;
Button16: TButton;
Button17: TButton;
Button18: TButton;
Button19: TButton;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button11Click(Sender: TObject);
procedure Button12Click(Sender: TObject);
procedure Button13Click(Sender: TObject);
procedure Button14Click(Sender: TObject);
procedure Button15Click(Sender: TObject);
procedure Button16Click(Sender: TObject);
procedure Button17Click(Sender: TObject);
procedure Button18Click(Sender: TObject);
procedure Button19Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form4: TForm4;
implementation
{$R *.DFM}
procedure TForm4.Button1Click(Sender: TObject);
begin
edit1.Text := edit1.Text + '1';
end;
procedure TForm4.Button2Click(Sender: TObject);
begin
edit1.Text := edit1.Text + '2';
end;
procedure TForm4.Button3Click(Sender: TObject);
begin
edit1.Text := edit1.Text + '3';
end;
procedure TForm4.Button4Click(Sender: TObject);
begin
edit1.Text := edit1.Text + '4';
end;
procedure TForm4.Button5Click(Sender: TObject);
begin
edit1.Text := edit1.Text + '5';
end;
procedure TForm4.Button6Click(Sender: TObject);
begin
edit1.Text := edit1.Text + '6';
end;
procedure TForm4.Button7Click(Sender: TObject);
begin
edit1.Text := edit1.Text + '7';
end;
procedure TForm4.Button8Click(Sender: TObject);
begin
edit1.Text := edit1.Text + '8';
end;
procedure TForm4.Button9Click(Sender: TObject);
begin
edit1.Text := edit1.Text + '9';
end;
procedure TForm4.Button10Click(Sender: TObject);
begin
edit1.Text := edit1.Text + '0';
end;
procedure TForm4.Button11Click(Sender: TObject);
begin
edit1.Text:=edit1.Text+'.';
end;
procedure TForm4.Button12Click(Sender: TObject);
var a,b,wynik:real;
pomocnicza:integer;
napis:string;
begin
val(edit1.text,a,pomocnicza); {zamiana napisu na liczbe}
val(label1.caption,b,pomocnicza);
wynik:=a;
case label2.Caption[1] of
'+' : wynik:=a+b;
'-' : wynik:=a-b;
'*' : wynik:=a*b;
':' : wynik:=a/b;
end;
label2.Caption:='=';
str(wynik:7:5,napis); {zamiana liczby na napis}
label1.caption:=napis;
end;
procedure TForm4.Button13Click(Sender: TObject);
begin
Button12Click(sender); {obliczmy to co jest widoczne}
label2.Caption:='+';
edit1.Text:='';
end;
procedure TForm4.Button14Click(Sender: TObject);
begin
Button12Click(sender);
label2.Caption:='-';
edit1.Text:='';
end;
procedure TForm4.Button15Click(Sender: TObject);
begin
Button12Click(sender);
label2.Caption:='*';
edit1.Text:='';
end;
procedure TForm4.Button16Click(Sender: TObject);
begin
Button12Click(sender);
label2.Caption:=':';
edit1.Text:='';
end;
procedure TForm4.Button17Click(Sender: TObject);
begin
edit1.Text:='';
label1.Caption:='0';
label2.Caption:='';
end;
procedure TForm4.Button18Click(Sender: TObject);
begin
edit1.Text:='';
end;
procedure TForm4.Button19Click(Sender: TObject);
begin
halt;
end;
end.
Asdef www.kanalia.toya.net.pl
Co do błęu - to u mnie taki narazie nie wyskakuje, ale sam program średnio działa.
I mam radę - zamiast Str i Val lepiej stosuj FloatToStr i StrToFloat - są znacznie wygodniejsze :)
np. zamiana czegoś co jest w Edit na liczbę rzeczywistą to StrToFloat(Edit1.Text)
ICQ : 245-363-570
to jak mówisz że u ciebie nie ma błędu to dlaczego u mnie jest chyba coś źle musiałem zrobić[:/] pomijająć, średnie działanie programu:P
Asdef www.kanalia.toya.net.pl
Przy IntToStr powinno to-to wyglądać tak:
procedure TForm4.Button11Click(Sender: TObject); begin edit1.Text:=edit1.Text+','; end;
]==][::::::::::::::::::::::::>
:! Nie tykać nawet kijem długim na pięć metrów :!
Poza tym - niech żyją moderatorzy :P
cytat:Asdef napisał:
to jak mówisz że u ciebie nie ma błędu to dlaczego u mnie jest chyba coś źle musiałem zrobić[:/] pomijająć, średnie działanie programu:P
Napisz co masz wpisane do Label1, Label2 i Edit1 oraz podaj sekwencje klawiszy po których wywala Ci ten błąd. Może tak uda się wywalić program u mnie :)
ICQ : 245-363-570
cytat:Oxi napisał:
Napisz co masz wpisane do Label1, Label2 i Edit1 oraz podaj sekwencje klawiszy po których wywala Ci ten błąd. Może tak uda się wywalić program u mnie :)
Label1 <----- liczby liczba początkowa tzn caption 0
Label2 <----- znaki tu nie ma nic w caption
edit1.text nie ma nic pole puste
i teraz tak np... wciskam sobie 2 następnie próbuje kliknąć w + lub inny znak wyskakuje mi błąd ten co cytowałem error[...]
a wskazuje mi na tą linie "case label2.Caption[1]" of to tak jak by było coś źle powiązane [:/] tylko ten error jest w formie komunikatu nie w delhi w formie błędów
oraz ten sam błąd pojawia się przy znaku =
Asdef www.kanalia.toya.net.pl
cytat:Asdef napisał:
Label2 <----- znaki tu nie ma nic w caption
No i już wiadomo dlaczego wyskakuje Ci błąd (i dlaczego mi nie wyskakiwał) :)
Label2.Caption na początku jest puste - a w procedurze obliczającej działanie odwołujesz się do label2.Caption[1] - a tym samym "wyłazisz" poza dozwolony zakres i program się wywala...
ICQ : 245-363-570
cytat:Oxi napisał:
No i już wiadomo dlaczego wyskakuje Ci błąd (i dlaczego mi nie wyskakiwał) :)
Label2.Caption na początku jest puste - a w procedurze obliczającej działanie odwołujesz się do label2.Caption[1] - a tym samym "wyłazisz" poza dozwolony zakres i program się wywala...
hehehe ludzka tempota nie zna granic:lol:
Ps. jeszcze raz dzięki:P
Asdef www.kanalia.toya.net.pl
cytat:Asdef napisał:
hehehe ludzka tempota nie zna granic:lol:
Cóż, mi się coś właśnie przydarzyło przy tworzeniu funkcji RUN w moim edytorku pascala. Otóż chciałem nieprawidłowo tworzyć string z nazwą pliku EXE z wynikiem. Błędy się zawsze zdarzają. Tylko jak masz BARDZO DUŻO samozaparcia stworzysz całkowicie idiotoodporny program. Wiem coś o tym. Moi kumple mieszali z moim softem robiąc rzeczy o których JA za Chiny Ludowe bym nie pomyślał. A taki błędzik jak u ciebie to w sumie niewiele. Ale jak wkurza!
]==][::::::::::::::::::::::::>
:! Nie tykać nawet kijem długim na pięć metrów :!
Poza tym - niech żyją moderatorzy :P
cytat:chomik napisał:
Błędy się zawsze zdarzają. Tylko jak masz BARDZO DUŻO samozaparcia stworzysz całkowicie idiotoodporny program.
Zgadza się - przy jakimś większym programie praktycznie niemożliwe jest uniknięcie błędów.
Co do idiotoodporności to też czasem ciężko przewidzieć wszystkie możliwości - już nie pamiętam dokładnie o co wtedy chodziło ale kiedyś miałem taki problem i jak w końcu zobaczyłem w jaki sposób user obsługuje program to zaliczyłem totalny opad szczeny :lol:
A co do błędów to najbardziej znienawidzony przezemnie to właśnie EAccessVioolation. U Asdefa wyskakiwał bezpośrednio w linii gdzie był błąd - ale czasem jak się gdzieś niechcący "pomaże" po pamięci to ten błąd może wywalić program np. w linijce a:=1 - i wtedy zaczyna się zabawa ze znajdywaniem prawdziwego miejsca błędu... :roll:
ICQ : 245-363-570
e tam AccessVioolation to mój ulubiony błąd :D Dobrze że Borland dał nam dobre programy do wyszukiwania błędów, ale niestety nie da wyszukać wszystkich błędów w dużych aplikacjach.
//----------------------
z_forum_experta@beldzio.com
www.beldzio.com
www.beldzio.com/forum
gg :3183960
cytat:Bełdzio napisał:
e tam AccessVioolation to mój ulubiony błąd :D Dobrze że Borland dał nam dobre programy do wyszukiwania błędów, ale niestety nie da wyszukać wszystkich błędów w dużych aplikacjach.
No właśnie - niestety...
A co do AccessViolation to chyba jesteś masochistą ;)
Szukanie źródła błędu AccessViolation w module mającym kilka tysięcy linii kodu - w którym jest od groma operacji na wskaźnikach i tablicach jest średnią przyjemnością - tym bardziej gdy program wywala w zupełnie innym miejscu niż jest błąd :ceyes:
ICQ : 245-363-570
że tak głupi spytam co to jest za błąd EAccessVioolation
Ps. no co dopiero zaczynam:cheesy:
Asdef www.kanalia.toya.net.pl
cytat:Asdef napisał:
że tak głupi spytam co to jest za błąd EAccessVioolation
AccessViolation to błąd ochrony dostępu. Występuje najczęściej gdy "wyjedziesz" indeksem talbicy poza dozwolony zakres (tak jak to było w Twoim przypadki) lub odwołasz się do nieistniejącego obiektu - np. zadeklarujesz jakiś obiekt ale nie utworzysz go przy pomocy Create. Powodów może być więcej - ale to są chyba najczęstsze.
Generalnie chodzi o to, że ktoś pomazał gdzieś na chama po pamięci ;)
ICQ : 245-363-570