Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    piccaweb
    Guest

    [ Delphi ] Errore Stack

    Ciao !
    Sono consapevole del fatto che la mia domanda potrà ricevere molte risposte dubbie ma come mai si verifica l'errore:
    Project ... raised exception class EAccessViolation with message : "Access vilation at address in module ... Process stopped! "


    Mi appare solo quando assegno a un componente TString un valore:
    codice:
     
    Var Str:TStrings;
    begin
    
    Str.Clear;
    Str.Text:= 'SELECT * FROM T_Noleggi WHERE( ( ';
    Appena viene eseguita una funzione o procedura che appartiene al componente TString compare l'errore!

    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,283
    Dal codice che hai postato, vedo che non hai creato un'istanza della classe. TStrings è una classe, "astratta" per giunta. Ciò significa che contiene metodi astratti che servono a definire uno scheletro il quale dovrà essere ereditato da classi discendenti specifiche e implementato adeguatamente. Devi utilizzare la classe TStringList al posto di TStrings; tale classe fornisce l'implementazione ai metodi astratti ereditati da TStrings.
    Inoltre, in quanto classe, deve essere creata richiamando il metodo costruttore Create.
    L'approccio corretto è il seguente:
    codice:
    var
      s: TStringList;
    begin
      s := TStringList.Create;
      try
        s.Text := 'SELECT * FROM ...';
        ...
      finally
        s.Free;
      end;
    end;
    Preferibilmente, evita l'uso di Str come simbolo, poichè è anche il nome di una procedura Delphi, quindi si potrebbero creare situazioni ambigue. Il codice modello sopra crea un'istanza di TStringList e la utilizza per gli scopi previsti dal programma, garantendo la distruzione dell'oggetto al termine del processo.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.