+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 3 su 3

Errore Access Violation in chiamata Indy HTTP e uso funzioni su stringhe

  1. #1
    L'avatar di systemgvp
    systemgvp non è in linea Scribacchino
    Salve,

    ho compilato un'applicazione con Delphi 10 compilata l'ultima volta con Delphi xe8 (e perfettamente funzionate), ora però mi accorgo che al richiamo di un componente indy genera questo errore

    EAccessViolation ERRORE : Access violation at address 00996981 in module 'applicazione.exe'. Read of address 0838000


    il codice usato è il seguente


    //compone la richiesta
    RispostaServer := TStringStream.Create;
    try
    //imposta le opzioni
    ChiamataServer.HTTPOptions := [hoForceEncodeParams, hoNoProtocolErrorException];
    //aggiunge i parametri ed effettua la chiamata al Server
    ChiamataServer.Request.UserAgent := 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';
    ChiamataServer.Post('http://sito.altervista.org/pagina.php', ParametriPost, RispostaServer);

    //Risposta del server
    RispostaWeb := TStringList.Create;
    RispostaWeb.Clear;
    RispostaWeb.Delimiter := ';';
    RispostaWeb.DelimitedText := RispostaServer.DataString;

    //se ci sono righe le aggiunge in coda
    if (RispostaWeb[0].Equals('accettata')) then
    begin
    ShowMessage(ok.');
    //chiude l'applicazione
    Application.Terminate;
    end
    else if (RispostaWeb[0].Equals(no)) then
    begin
    ShowMessage('Problemi nei dati.');
    end;
    //libera la memoria
    RispostaWeb.Free;
    except on E : Exception do ShowMessage(E.ClassName+' ERRORE : '+E.Message);
    end;
    //svuota la memoria
    RispostaServer.Free;


    l'oggetto ChiamataServer è un TIdHTTP normale, senza modifiche alle opzioni. Dai test ho scoperto che l'errore si genera al momento della chiamata sulla riga

    ChiamataServer.Post('http://sito.altervista.org/pagina.php', ParametriPost, RispostaServer);


    La pagina funziona regolarmente anche perché ha pochissime righe di codice. Purtroppo però questo errore è strano per me.

    Cosa potrebbe essere?
    ℹ️ Leggi di più su systemgvp ...

  2. #2
    L'avatar di systemgvp
    systemgvp non è in linea Scribacchino
    Ho risolto,

    in pratica ultimamente sto avendo un sacco di problemi con la funzione POS, perché sembra sempre più non funzionare con nessun sistema operativo tramite FireMonkey, il problema era in


    utente[Pos(' ', utente)] := '_';
    ParametriPost.AddFormField('utente', utente);


    in qualche modo non compromette il dato una volta elaborato, infatti tolta, o meglio scritta a mano, questa funzione, tutto ha ripreso a funzionare correttamente.
    ℹ️ Leggi di più su systemgvp ...

  3. #3
    L'avatar di _alka_
    _alka_ non è in linea Very Important Person
    So che nell'ambito mobile sono stati introdotti diversi cambiamenti riguardo le stringhe.

    Dovresti preferibilmente utilizzare i metodi helper disponibili sull'oggetto stringa, elencati qui: essi dovrebbero avere un comportamento uniforme indipendentemente dal compilatore e piattaforma.

    Ciao!
    ℹ️ Leggi di più su _alka_ ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Chiamata funzioni di classe
    Da SirNino nel forum Visual Basic 6
    Risposte: 2
    Ultimo Post: 04-03-2016, 10:22
  2. Risposte: 21
    Ultimo Post: 20-04-2013, 16:47
  3. Risposte: 10
    Ultimo Post: 22-12-2012, 01:26
  4. Risposte: 3
    Ultimo Post: 14-03-2012, 13:42
  5. [VB6] Effettuare una chiamata HTTP
    Da nikasp nel forum Visual Basic 6
    Risposte: 12
    Ultimo Post: 07-05-2007, 12:39