logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[DELPHI] Błąd przypisania wartości do stałej Liczba w klasie TDane

TomekMus 10 Gru 2010 00:16 1565 10
REKLAMA
  • #1 8848904
    TomekMus
    Poziom 17  
    Posty: 329
    Ocena: 7
    Mam problem z stałą cont podczas gdy chcę przypisać coś takiego

    Const
      Liczba : Integer = 0;
    
    type
      TDane : class
                    Znak : Integer;
                 end;
    
    var
      Dane : TDane;
    
    begin
      Liczba:=Dane.Znak;
    end;


    Mam taki komunikat: "Left side cannot be assigned to"
  • REKLAMA
  • REKLAMA
  • #3 8849648
    TomekMus
    Poziom 17  
    Posty: 329
    Ocena: 7
    Kiedyś zmieniałem i działało.

    Wartość stała była początkowa a potem program zwiekszał o +1 i wszystko działało. W książkach też są opisane przykłady oraz w Demo Delphi
  • REKLAMA
  • Pomocny post
    #4 8849657
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 299
    Oczywiście że to działa ! W ten sposób zadeklarowaną zmienną, można zmieniać!
    program Project2;
    {$APPTYPE CONSOLE}
    uses SysUtils;
    Const
      Liczba : Integer = 0;
    
    type
      TDane = class(TObject)
               Znak : Integer;
              end;
     var
       Dane : TDane;
    begin
     Dane:=TDane.Create;
     Dane.Znak := 255564;
     Liczba:=Dane.Znak;
     writeln(inttostr(Liczba));
     readln; 
    end. 
  • REKLAMA
  • #5 8849689
    TomekMus
    Poziom 17  
    Posty: 329
    Ocena: 7
    WItam,

    No właśnie powinno działac a mi nadal wyskakuje błąd - czy Delphi ma jakieś ustawienia? Inne aplikacje z takimi zmiennymi mi działają.
  • Pomocny post
    #6 8849727
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 299
    To sa moje ustawienia, przy których zazwyczaj pracuję :
    Delphi napisał:
    {$A+,B-,C+,D+,E-,F-,G+,H+,I+,J+,K-,L+,M-,N+,O-,P+,Q+,R+,S-,T-,U-,V+,W-,X+,Y-,Z1}
    {$MINSTACKSIZE $00004000}
    {$MAXSTACKSIZE $00100000}
    {$IMAGEBASE $15000000}

    W swoim kodzie wejdź w pustą linię, gdzieś na początku kodu i naciśnij kombinację klawiszy : Przytrzymać CTRL oraz dwa razy O. (Literka O a nie cyferka 0 :) )
    Do początku twojej aplikacji zostaną dodane twoje ustawienia.
  • #7 8849742
    TomekMus
    Poziom 17  
    Posty: 329
    Ocena: 7
    Dało mi taki efekt:

    {$A8,B-,C+,D+,E-,F-,G+,H+,I+,J-,K-,L+,M-,N+,O+,P+,Q-,R-,S-,T-,U-,V+,W-,X+,Y+,Z1}
    {$MINSTACKSIZE $00004000}
    {$MAXSTACKSIZE $00100000}
    {$IMAGEBASE $00400000}
    {$APPTYPE GUI}
    {$WARN SYMBOL_DEPRECATED ON}
    {$WARN SYMBOL_LIBRARY ON}
    {$WARN SYMBOL_PLATFORM ON}
    {$WARN UNIT_LIBRARY ON}
    {$WARN UNIT_PLATFORM ON}
    {$WARN UNIT_DEPRECATED ON}
    {$WARN HRESULT_COMPAT ON}
    {$WARN HIDING_MEMBER ON}
    {$WARN HIDDEN_VIRTUAL ON}
    {$WARN GARBAGE ON}
    {$WARN BOUNDS_ERROR ON}
    {$WARN ZERO_NIL_COMPAT ON}
    {$WARN STRING_CONST_TRUNCED ON}
    {$WARN FOR_LOOP_VAR_VARPAR ON}
    {$WARN TYPED_CONST_VARPAR ON}
    {$WARN ASG_TO_TYPED_CONST ON}
    {$WARN CASE_LABEL_RANGE ON}
    {$WARN FOR_VARIABLE ON}
    {$WARN CONSTRUCTING_ABSTRACT ON}
    {$WARN COMPARISON_FALSE ON}
    {$WARN COMPARISON_TRUE ON}
    {$WARN COMPARING_SIGNED_UNSIGNED ON}
    {$WARN COMBINING_SIGNED_UNSIGNED ON}
    {$WARN UNSUPPORTED_CONSTRUCT ON}
    {$WARN FILE_OPEN ON}
    {$WARN FILE_OPEN_UNITSRC ON}
    {$WARN BAD_GLOBAL_SYMBOL ON}
    {$WARN DUPLICATE_CTOR_DTOR ON}
    {$WARN INVALID_DIRECTIVE ON}
    {$WARN PACKAGE_NO_LINK ON}
    {$WARN PACKAGED_THREADVAR ON}
    {$WARN IMPLICIT_IMPORT ON}
    {$WARN HPPEMIT_IGNORED ON}
    {$WARN NO_RETVAL ON}
    {$WARN USE_BEFORE_DEF ON}
    {$WARN FOR_LOOP_VAR_UNDEF ON}
    {$WARN UNIT_NAME_MISMATCH ON}
    {$WARN NO_CFG_FILE_FOUND ON}
    {$WARN MESSAGE_DIRECTIVE ON}
    {$WARN IMPLICIT_VARIANTS ON}
    {$WARN UNICODE_TO_LOCALE ON}
    {$WARN LOCALE_TO_UNICODE ON}
    {$WARN IMAGEBASE_MULTIPLE ON}
    {$WARN SUSPICIOUS_TYPECAST ON}
    {$WARN PRIVATE_PROPACCESSOR ON}
    {$WARN UNSAFE_TYPE OFF}
    {$WARN UNSAFE_CODE OFF}
    {$WARN UNSAFE_CAST OFF}
  • Pomocny post
    #8 8849773
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 299
    Podmień tę pierwszą linię w ustawianiach na taką :
    {$A8,B-,C-,D+,E-,F-,G+,H+,I+,J+,K-,L+,M-,N-,O+,P+,Q+,R+,S-,T-,U-,V+,W-,X+,Y-,Z1}
    I wtedy skompiluj.
    Resztę tych ustawień, możesz z kodu spokojnie wyrzucić.
  • #9 8849838
    TomekMus
    Poziom 17  
    Posty: 329
    Ocena: 7
    Udało się skompilować - DZIĘKUJĘ!!!

    Zastanawia mnie która dyrektywa odpowiada za to że podczas tworzenia nowej aplikacji Delphi zabrania stosowania takiego zapisu.
  • Pomocny post
    #10 8849845
    arnoldziq
    VIP Zasłużony dla elektroda
    Posty: 5376
    Pomógł: 789
    Ocena: 299
    TomekMus napisał:
    Zastanawia mnie która dyrektywa odpowiada za to że podczas tworzenia nowej aplikacji Delphi zabrania stosowania takiego zapisu.

    Nie wiem :)
    Ale możesz poszukać w internecie, albo pozmieniać "-" i "+" metodą "prób i błędów" :)
  • #11 8850092
    TomekMus
    Poziom 17  
    Posty: 329
    Ocena: 7
    OK - dzięki za udzieloną pomoc

Podsumowanie tematu

✨ Użytkownik napotkał problem z przypisaniem wartości do stałej w Delphi, co skutkowało komunikatem o błędzie "Left side cannot be assigned to". W odpowiedziach podano, że stałe nie mogą być zmieniane po ich zadeklarowaniu. Użytkownik zauważył, że w przeszłości udało mu się to zrobić, a inni uczestnicy dyskusji przedstawili przykłady poprawnego użycia zmiennych oraz zasugerowali sprawdzenie ustawień kompilatora. Po modyfikacji ustawień kompilacji, użytkownik zdołał skompilować kod, ale pozostało pytanie o dyrektywy, które mogą wpływać na takie ograniczenia w Delphi.
Wygenerowane przez model językowy.
REKLAMA