TwojePC.pl © 2001 - 2024
|
|
A R C H I W A L N A W I A D O M O Ś Ć |
|
|
|
Problem z Delphi - niby wszystko dobrze, a wali błędami pamięci przy uruchamianiu , laciak88 16/11/08 11:23 Witam!
W sumie pierwszy raz pisze z komponentami graficznymi i na samym poczatku natknalem sie na dosc dziwny dla mnie problem (wg mnie powinno dzialac - nie wiem gdzie mam blad).
Przy odpaleniu najpierw blad z "adress violation at adress...", a po drugim F9 "runtime error 216 at...". Kod jest bardzo krotki oraz prosty i sypie sie na probie przypisania tekstu do komorki stringgrida :/. Znajac zycie jakis banalny blad robie. Moze mi ktos pomoc? Jest to dla mnie dosc pilne, bo musze niedlugo program oddac, a to dopiero poczatek. Moge wkleic kod, ale nie wiem czy cos z niego tu wyniknie bez komponentow wstawionych, wiec moge na maila przeslac, jesli ktos ma ochote looknac. Z gory dzieki za pomoc!
Pozdrawiam!"To Alcohol! The cause of, and solution to, all of
life's problems." - Oczywiście komórka istnieje? , Sherif 16/11/08 11:48
bo jak nie to masz AV.- chyba nie , laciak88 16/11/08 11:58
mozesz rozwinac? Co to AV? Mecze sie z tym, a na google cie moge znalezc za duzo materialow pomocnych przy obsludze stringgrida :/"To Alcohol! The cause of, and solution to, all of
life's problems."
- rozwiazanie i pytanie , laciak88 16/11/08 13:23
nigdy nie pracowalem z modul;ami (zawsze console application tylko), wiec nie wiedzialem jak rozdzielic program na unit i project. Cos tam juz powoli zaczynam kumac, tylko ciezko mi zadeklarowac procedury w unit zeby je wywolac w project. Zrobilem cos takiego:
-unit:
procedure dodaj(); forward;
implementation
{$R *.dfm}
procedure dodaj;
begin
form1.sg.cells[0,2]:='imie';
end;
-project:
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
dodaj();
Application.Run;
end.
Pytanie: da sie to zrobic jakos sprawniej? (bez forwardowania). Czy po prostu calkiem innym tokiem powinienem isc? (jakim?)"To Alcohol! The cause of, and solution to, all of
life's problems." - Eeeee , JOTEM 16/11/08 13:49
Tak jakoś "konsolowo" napisałeś ;-)
Zrób z Dodaj publiczną metodę formy!, nie używaj wtedy przedrostka Form1. w tej metodzie (w ogóle tego unikaj).
Aż strach mi wyobrazić sobie, jak musiał wyglądać ten kod wcześniej - jak miał ten błąd ;-)
Poza tym najlepiej nie używaj Dodaj w unicie głównym projektu, wykorzystuj zamiast tego zdarzenia (np OnShow formy).
Podstawową kopalnią informacji jest help i przykłady kodu.
A unit główny (ten wylistowany plik) modyfikuj dopiero, jak będziesz wiedział co robisz. Do tej pory nie dodykaj go kursorem, nawet nie oglądaj zawartości. Wszystko umieszczaj w unitach form lub dodatkowych własnych unitach. Już nie pamiętam kiedy ostatni raz użyłem forwardowania (musiało byćto na prawdę daaawno temu) - w programowaniu obiektowym to praktycznie nie istnieje, pojedyncze procedury zastępowane są przez klasy zgodnie z pogrupowaniem danych i zależnosciami pomiędzy nimi.
Pzdr.Poryjemy..zrobaczymy - dzieki , laciak88 16/11/08 14:07
czytajac twoja wypowiedz i meczac sie wykminilem, ze w ogole nie potrzebuje deklarowac procedury przed implementation, bo bede jej uzywal jako procedury w kliknieciu guzika. Ale sprobowalem zrobic tez jako metode i dziala, tyle ze wtedy w implementation jak deklaruje ta procedure, to musze ja poprzedzic tform1, a w project przy wywolaniu musze poprzedzic form1.
Cel jest taki: po kliknieciu na guzik ma dodac dany wpis do stringgrida - jak najlepiej to zaplanowac od poczatku, zeby pozniej nie miec problemow?"To Alcohol! The cause of, and solution to, all of
life's problems." - Jeszcze raz powtarzam , JOTEM 16/11/08 15:16
W projekt dodajesz coś dopiero jak dobrze wiesz, że inaczej tego nie zrobisz, a to tego poziomu jeszcze spora droga może być przed Tobą.
Nie rób więc nic w projekt, wszystko co chcesz zrobić w tym programie zrobisz w unicie formy!
Owszem, jak już musisz metodeużyćw project, to form1. będzie niezbędne, ale patrz rady powyzej.
Przed implementation (w interface) deklarujesz procedury, klasy itp które mają być dostępne POZA UNITEM! Ponieważ tform1 musi być dostępne (tworzone w project) to właściwie Dodaj powinno być metodą prywatną.
Napisz z jakiej wersji Delphi korzystasz.
W zależności od stopnia docelowego pseudo "piękna" programu masz kilka dróg:
- najprostsza - położyć na formie przycisk, kliknąć w niego w design time i w utworzonym prototypie zdarzenia OnClick wpisać SG.Cells[..,..]:='...';
- rozsądna - stworzyć prywatną metodę dodaj(x,y:integer; t:String) i w metodzie OnClick (patrz wyzej) wywołać Dodaj
- przyszłosciowa -stworzyć akcję, w niej wywołać dodaj, akcję podpiąć do przycisku.
To chyba tyle.Poryjemy..zrobaczymy - dzieki , laciak88 16/11/08 15:30
przyjeto do wiadomosci :). Musze wykonac do czwartku dzialajaca baze danych z dodawaniem, usuwaniem i zapisem/odczytem do/z pliku. Dodatkowo dodawanie, losowanie, wczytywanie z pliku (3 przyciski) musi obslugiwac jedna procedura. Na razie sobie w glowie ukladam i zrobie jak najlepiej uwzgledniajac czas"To Alcohol! The cause of, and solution to, all of
life's problems."
- Tak swoją drogą , JOTEM 16/11/08 15:55
jeśli Twoim zadaniem jest stworzyć bazę danych w Delphi RĘCZNIE, poprzez własnoręczne operowanie na plikach, to oznacza kompletny brak inwencji u prowadzącego zajęcia.
Rozumiem, że coś na zajęciach robić trzeba, ale nie ręcznie bazę danych.
Jeszcze tylko powiedz, że pliki otwieracie klasycznymi DOSowymi metodami i zapisujecie przez Write zamiast wykorzystania strumieni plikowych ;-)
Żeby się wykpić (o ile prowadzący to zaakceptuje) znajdź jakiś system plikowych baz danych do Delphi (np MyLittleDb) i przynajmniej część plikową zrób wykorzystując komponenty tego systemu.Poryjemy..zrobaczymy - hmmm , laciak88 16/11/08 17:41
wyglada na to, ze tak. Mamy napisac baze danych korzystajaca z pliku rekordowego, a pozniej bedziemy robic do tego szukania itepe. Tyle, ze to sa zajecia z zarzadzania danymi informacyjnymi, a nie programowanie. Co rozumiesz przez brak inwencji? Co ciekawszego moze nam zlecic? :)"To Alcohol! The cause of, and solution to, all of
life's problems." - Zarządzanie danymi informacyjnymi , JOTEM 16/11/08 18:56
i ręczne pisanie rekordowych, plikowych baz danych w Delphi?
Ma to sens, jakbyście już mieli za sobą cały kurs programowania w Delphi a miałoby to szybko zilustrować problemy zwiazane z pisaniem serwerów bazodanowych. Przy takim założeniu (ukończony zaawansowany kurs programowania w Delphi) nie zadawałbyś pytań takich jak zadawałeś. Coś jest więc chyba nie tak z waszym programem nauczania. Wolę nie wnikać w szczegóły ;-)Poryjemy..zrobaczymy - hehe , laciak88 16/11/08 20:19
delphi mialem w pierwszym semestrze, ale sama konsole - w sumie dosc duzo mielismy (od nauki pisania i myslenia po bardziej zaawansowane struktury danych), ale nigdy nie mielismy nic z grafika. W 2 semestrze mialem C, ale czesc obiektowa sobie troche chyba za bardzo odpuscilem i niewiele pamietam. Wiec program jest niby ok, ale gorzej z tym co sie pamieta"To Alcohol! The cause of, and solution to, all of
life's problems."
|
|
|
|
|
All rights reserved ® Copyright and Design 2001-2024, TwojePC.PL |
|
|
|
|