Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [Pascal] Modificare un campo del record

    Salve...

    ho riscontrato un piccolo problema in Pascal per la modifica di un campo del record.

    Il problema sta che sei io modifico un campo (di tipo String), uso la funzione FilePos per sapere la posizione corrente e tramite la seek vado a salvare il campo su quel record, mi ritorna successivamente il contenuto che avevo prima della modifica.

    Faccio un esempio:

    Nel momento in cui creo un record, fra i vari campi c'è pure Record_Arc.estinta:='N' . Poi mi posiziono sul record (tramite la seek) e scrivo sull'archivio.
    Successivamente, se una serie di condizioni sono vere, devo modificare un campo del record da Record_Arc.estinta:='N' a Record_Arc.estinta:='S'. Per fare cioè naturalmente prima faccio assumere a quella variabile quel valore, poi con la funzione FilePos mi deduco la posizione e con la Seek mi posizione su quel record e scrivo.

    codice:
    Begin
     Assign(Arc, '....dat');
     Reset(Arc);
     
     While ( Not Eof (F_Fatt) ) Do
      Begin
       condizioni varie 
       If Record_Arc.estinta='N'
        Then
         Begin
          F_Pos:=FilePos(Arc);
          Record_Arc.estinta:='S';
          Seek(Arc, F_Pos);
          Write(F_Fatt, R_Fatt);
         End;
       End;
    
    Close(Arc);
    End.
    Dove sbaglio?

    Grazie...
    bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla

    Salento 12 !! Ultras Lecce !!

  2. #2
    rileggo solo ora il post...

    mi scuso per un errore nel nome degli archivi...

    ...correggo...

    codice:
    Begin
     Assign(Arc, '....dat');
     Reset(Arc);
     
     While ( Not Eof (Arc) ) Do
      Begin
       condizioni varie 
       If Record_Arc.estinta='N'
        Then
         Begin
          F_Pos:=FilePos(Arc);
          Record_Arc.estinta:='S';
          Seek(Arc, F_Pos);
          Write(Arc, Record_Arc);
         End;
       End;
    
    Close(Arc);
    End.
    Teoricamente non cambiava molto.

    Grazie...
    bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla

    Salento 12 !! Ultras Lecce !!

  3. #3
    Che tipo di file è Arc ?

  4. #4
    Originariamente inviato da king64
    Che tipo di file è Arc ?
    a si scusa, ti scrivo come ho identificato il record...

    codice:
    Program prova;
    
    Type Record_A = Record
                         estinta : String;
                       End;
            File_Arc = File Of Record_A;
    
    Var  Arc : File_Arc;
          Record_Arc : Record_A;
    Serve altro?

    Grazie mille...
    bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla

    Salento 12 !! Ultras Lecce !!

  5. #5
    ho risolto in questo modo...

    codice:
    Begin
     Assign(Arc, '....dat');
     Reset(Arc);
     
     While ( Not Eof (Arc) ) Do
      Begin
       condizioni varie 
       If Record_Arc.estinta='N'
        Then
         Begin
          F_Pos:=FilePos(Arc);
          Record_Arc.estinta:='S';
          Seek(Arc, F_Pos-1 );
          Write(Arc, Record_Arc);
         End;
       End;
    
    Close(Arc);
    End.
    in questo modo funziona, ma se sapete indicarmi un modo migliore, è ben accetto...

    Grazie ancora
    bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla

    Salento 12 !! Ultras Lecce !!

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.