ďťż

Ładny brzuch

Co oznacza błąd:

Too many local constants. Use shorter procedures

można go jakoś ominąć ???

dodam, że pojawia się on przy tym kodzie:

end; end; end; end; end; end; end; end;

który wcześniej był ok, a teraz jak się tego nazbierało więcej (end;) to jest błądzik...
Użytkownik akuku99 edytował ten post 11 listopad 2006, 12:22


Gdzie? Kiedy? <_<

przed chwilą <_< ...

bo mam taki kodzik:

begin if Edit1.Text= 'Bartek' then begin Memo1.Lines.Add('super imię !'); end else ShowMessage('Brak imienia w bazie !); end;

i mam ze 100 takich właśnie w jednej procedurce jednego buttona.
Użytkownik akuku99 edytował ten post 11 listopad 2006, 11:01
przyznam ze takiego jeszcze nie widzialem ^^
za duzo stalych lokalnych czyli pewnie chodzi o imiona (stale ktorych uzywasz w IF'ie)
albo skroc kod, albo sprobuj przeniesc do globalnej procedury albo stale przenies gdzies indziej ;)



Optymalizuj kod. Np zamiast setek if..then..else zrób dodatkową procedurę która ma sprawdzać jakie imię było jej przekazane i zwracać odpowiedni tekst. Jednak to, co ma zwrócić najlepiej odczytuj z zewnętrznego pliku (np ini) wtedy nie będzie trzeba aż tylu if..then..end...
przykład (wywołanie):
memo1.lines.add(Sprawdz(edit1.text));
+ funkcja Sprawdz (trzeba ją jeszcze na początku zadeklarować..):
function Sprawdz (imie: string): string; begin var ini:tinifile; //+ do uses wrzuc inifiles begin ini := tinifile.create(extractfilepath(application.exename)+'db.ini'); result := ini.readstring('main', imie, 'Brak imienia w bazie!'); end; end;
i pliczek db.ini:
[main] ania=fajne imie! pawel=jakiestam imie! bleble=blabla

jak jest dane imie w bazie to jest ok, ale jak nie ma to wychodzi błąd
Brak imienia w bazie! i bardzo dobrze lecz jeżeli pole edit1 jest puste i nacisnę na button to jest błąd access violation.. jak to naprawić ??
Użytkownik akuku99 edytował ten post 11 listopad 2006, 17:34
To wtedy sprawdzasz czy Edit1 nie jest pusty ;)
if not Edit1.Text <> '' then //sprawdzamy imię
Użytkownik JaCkObS edytował ten post 11 listopad 2006, 17:42
ale jak to dodać do tej funkcji ?? w którym miejscu ?
Użytkownik akuku99 edytował ten post 11 listopad 2006, 17:51
Na początek...
No jeśli używasz tej funkcji co Ci podał Einzeinbleth to zmodyfikuj sobie do: function Sprawdz (imie: string): string; begin var ini:tinifile; //+ do uses wrzuc inifiles begin ini := tinifile.create(extractfilepath(application.exename)+'db.ini'); if imie<>'' then result := ini.readstring('main', imie, 'Brak imienia w bazie!'); end; end;

wiem ze sie czepiam, ale widze ze kolega akuku99 dopiero zaczyna i chyba warto sie uczyc od poczatku dobrych nawykow ...
function Sprawdz (imie: string): string; begin var ini:tinifile; //+ do uses wrzuc inifiles begin if imie<>'' then begin ini := tinifile.create(extractfilepath(application.exename)+'db.ini'); result := ini.readstring('main', imie, 'Brak imienia w bazie!'); ini.free; end; end; end;
po co w ogole tworzyc tinifile jesli imie jest puste?
i zwalniac jesli utworzymy ... :)

dzięki Ci migajek ;) przeprawiłem na twój kod.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •