Co się dzieje Zmieniam ikonę programu i komiluję a dalej jest domyślna, ustawiona przez Delphi.
Bo zmieniasz nie tam gdzie trzeba
Ikona widoczna w folderze:
Project Options Application Load Icon(przycisk, klikasz i podajesz lokalizacje swojej ikony) OK(potwierdzamy
Ikona widoczna w programie (prawy góry róg formy):
Klikasz na Form1(chyba że zmieniłeś na inną nazwę) w Object treeView W Object Inspector wybierasz opcje z zakładki Properties ->Icon ...(klikasz na 3 kropki) W okienku co się pojawiło klikasz na Load Wybierasz lokalizacje swojej ikony (OK) Klikasz OK I gotowe
Petermechanic napisał/a:
wywala mi także hinty(zmmienna nie została uzyta) oraz warningi(zmienna nie została zainicjonowana)
Naucz się czytać skoro nie została za inicjowana to znaczy że nie została taka opcja włączona
W Object Inspectorze -->Properties-->ShowHint(domyślnie ustawione na False) ustawiasz na True.
Nastepnie: Object Inspector -->Properties--> Hint (piszesz to co ma być w Hincie ) I powinno zadziałać na 100%
_________________ Moderatora grzecznie się słuchamy,
nie spamujemy, nie bluzgamy...
Build
[Warning] Unit2.pas(92): Variable 'count' might not have been initialized
[Warning] Unit2.pas(127): Variable 'IniFile' might not have been initialized
[Warning] Unit2.pas(141): Variable 'IniFile' might not have been initialized
[Warning] Unit2.pas(141): Variable 'count' might not have been initialized
[Hint] Unit1.pas(106): Value assigned to 'p' never used
[Warning] Unit1.pas(230): Comparing signed and unsigned types - widened both operands
[Hint] Unit1.pas(288): Value assigned to 'Czas1' never used
Wszystko chodzi a w ten sposób na zmienianie ikony nie dało rady. Przerobiłem projekt i ikona się zmienia. Te zmikenne co powyżej zostają użyte , a jednak wywala błędy kompilatora, zmienne działają.
[Warning] Unit2.pas(92): Variable 'count' might not have been initialized
[Warning] Unit2.pas(127): Variable 'IniFile' might not have been initialized
[Warning] Unit2.pas(141): Variable 'IniFile' might not have been initialized
[Warning] Unit2.pas(141): Variable 'count' might not have been initialized
To oznacza że Być może te rzeczy/zmienne nigdy nie zostaną użyte To jest informacja dla Ciebie aby niepotrzebnie nie zaśmiecać pamięci Ale program i tak je skompiluje tak się zdarza jak masz np. Warunki logiczne np. IF coś tam = coś tam Then (tu użyta ta zmienna); Dlatego raz ta zmienna nie zostanie użyta a raz zostanie użyta dlatego masz taką informację Tak samo przy Instrukcji wielokrotnego wyboru "case"
Kod:
[Hint] Unit1.pas(106): Value assigned to 'p' never used
[Warning] Unit1.pas(230): Comparing signed and unsigned types - widened both operands
[Hint] Unit1.pas(288): Value assigned to 'Czas1' never used
[Hint] Unit1.pas(106): Value assigned to 'p' never used Oznacza że ta zmienna na 100% nigdy nie zostanie użyta w żadnym wypadku czyli po prostu "zaśmieca" pamięć Tak samo z [Hint] Unit1.pas(288): Value assigned to 'Czas1' never used
A to:
[Warning] Unit1.pas(230): Comparing signed and unsigned types - widened both operands
To bym musiał zobaczyć w kodzie bo nie umiem sprecyzować odpowiedzi Ale Jak widzisz:
Hint- pod powiedź
Waring- Niebezpieczeństwo
///Obydwa powyższe przedrostki które kompilator Ci wyrzuci to i tak się skompilują\\\
Error- Błąd-- nie da się skompilować
Podsumowując:
takie rzeczy mogą występować ale staraj się ich w większych programach unikać ponieważ to w niektórych przypadkach zaoszczędzi Ci pamięci
_________________ Moderatora grzecznie się słuchamy,
nie spamujemy, nie bluzgamy...
no a jeśli jakaś zmienna jest w funkcji if to ona raz będzie używana a raz nie. to wtedy można to jakoś naprawić żeby nie pojawiał się warning??
Chodzi o to że Delphi informuje Cię że jakaś twoja zmienna być może nie zostanie u użyta. Czyli np.:
If a=b Then zmienna1:= a*2 Else zmienna2:= a*b;
I w takiej sytuacji jeśli nie użyłeś/aś wcześniej Zmiennej nr.1 lub 2 to Delphi cię o tym po informuje wysuwajac na dole "warring" Ale program z kompiluje się poprawnie Chodzi o to aby w programie nie było zmiennych które nie są używane(w ogóle) ponieważ zajmują jakieś miejsce w pamięci dlatego Borlad w Delphi dorobił taka opcję
[ Dodano: 2006-10-30, 21:54 ]
Cytat:
to wtedy można to jakoś naprawić żeby nie pojawiał się warning??
To nie jest żaden błąd Tak się zdarza to jest normalne, a jeśli nie chcesz aby tak było to po prostu musiałbyś użyć tych zmiennych wcześniej/później w programie w tedy kompilator nie wyrzuci Ci takiej informacji.
PS:
Teraz już wszystko jasne?? Czy jeszcze masz jakieś wątpliwości ?
_________________ Moderatora grzecznie się słuchamy,
nie spamujemy, nie bluzgamy...
[Warning] Unit2.pas(92): Variable 'count' might not have been initialized
[Warning] Unit2.pas(127): Variable 'IniFile' might not have been initialized
[Warning] Unit2.pas(141): Variable 'IniFile' might not have been initialized
[Warning] Unit2.pas(141): Variable 'count' might not have been initialized
To oznacza że Być może te rzeczy/zmienne nigdy nie zostaną użyte
Nie
To oznacza, że zmienna może nie zostać zainicjalizowana a nie użyta.
Przykład:
Kod:
try
i := 1;
except
end;
ShowMessage(IntToStr(i + 1));
Jako, że inicjalizacja zmiennej i jest w kodzie try...except to kompilator twierdzi, że i może nie zostać zainicjalizowane i działanie i + 1 może odbywać się na niezainicjalizowanej zmiennej i
Oczywiście w przypadku tego kodu powyżej taka sytuacja jest niemozliwa, ale ostrzeżenie będzie.
ExeQtoR napisał/a:
[Hint] Unit1.pas(106): Value assigned to 'p' never used Oznacza że ta zmienna na 100% nigdy nie zostanie użyta w żadnym wypadku czyli po prostu "zaśmieca" pamięć Tak samo z [Hint] Unit1.pas(288): Value assigned to 'Czas1' never used
Nieee .... To oznacza, że wartość przypisana do zmiennej nigdy nie zostanie użyta ...
Przykład:
Kod:
i := 40; //ta wartość nigdy nie zostanie użyta
i := 50;
ShowMessage(IntToStr(i));
I w przypadku powyższego kodu kompilator ma rację
ExeQtoR napisał/a:
A to:
[Warning] Unit1.pas(230): Comparing signed and unsigned types - widened both operands
To bym musiał zobaczyć w kodzie bo nie umiem sprecyzować odpowiedzi
A to oznacza, że porównujesz (wykonujesz jakąś operację) zmienną typu signed ze zmienną typu unsigned. Czyli zmienną , która ma znak + lub - ze zmienną, która takiego znaku nie ma. Np zmienną typu dword z integerem ... Przykład:
Kod:
var i: integer;
ProgressBar1.Max := 100;
ProgressBar1.Position := 0;
ProgressBar1.Update;
i := GetTickCount;
while GetTickCount - i < 10000 do //pierwsze otrzeżenie o signed and usigned
begin
ProgressBar1.Position := (GetTickCount - i) div 100; // drugie ostrzeżenie o signed and unsigned
ProgressBar1.Update;
end;
Solucja dla powyższego przykładu: deklaracja i jako dword (ponieważ funkcja GetTickCount zwraca dword)
Możesz pisać nowe tematy Możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum