Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di smt
    Registrato dal
    Jul 2002
    Messaggi
    167

    [delphi][win Server 2003]Invalid pointer operation

    che voi sappiate esiste qualche diversità tra win xp e win 2003 server tale per cui una app funzioni perfettamente su win xp mentre mi alza una eccezione "Invalid pointer operation" su win 2003 server?
    ha qualche protezione della memoria o cose del genere?
    cosa posso fare per scovare l'inghippo?
    Reality is that which, when you stop believing in it, doesn't go away

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,301
    I due sistemi operativi hanno senz'altro diversità strutturali, tuttavia trovare la causa del problema non sarà così facile, poichè potrebbe trattarsi di qualsiasi fattore.

    Usi componenti di terze parti? Cosa fa la tua applicazione? Esistono operazioni che prescindono dal sistema operativo? Accedi a database server o altro?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  3. #3
    Utente di HTML.it L'avatar di smt
    Registrato dal
    Jul 2002
    Messaggi
    167
    proprio te cercavo,
    ricordi quando mi hai spiegato come allocare e riempire un puntatore?

    la cosa funzionava, sul mio pc, ora che ho spostato l'app sul server ho un invalid pointer operation, non so nemmeno come trovare il punto esatto in cui genera l'eccezione per essere sicuro che sia proprio quel puntatore, insomma non ho il debugger dell'ide sul server... non ho trovato di meglio che compilare il progetto commentando le parti a rischio.

    immagina una situazione del genere:

    // è definita così
    procedure FillBuffer(var Buffer: PByte);
    var SafeBuffer: PByte;
    ...
    begin

    for I to pred(fieldCount) do begin
    // riempi il buffer con i dati
    ...
    inc(SafeBuffer, 1);
    end;
    inc(SafeBuffer, -RecordSize);
    move(SafeBuffer^, Buffer^, RecordSize);
    end;

    // la chiamo così
    BufferH := allocMem(RecordSize);
    try
    BufferH^ := 0; // nil
    FillBuffer(BufferH); //<-- invalid pointer
    finally
    freeMem(BufferH, RecordSize);
    end;
    Reality is that which, when you stop believing in it, doesn't go away

  4. #4
    A mio avviso potrebbe dipendere dalla versione di Delphi che utilizzi per compilare l'eseguibile.
    Sarebbe molto utile installare Delphi su una macchina con s.o. Windows Server 2003 e vedere cosa accade.

  5. #5
    Utente di HTML.it L'avatar di smt
    Registrato dal
    Jul 2002
    Messaggi
    167
    ci sto pensando seriamente, anche se non ho la liceza del so.
    Reality is that which, when you stop believing in it, doesn't go away

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.