Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: antoniog - Agosto 29, 2019, 06:35:02 pm

Titolo: Scrivere in un file di testo i campi memo di una tabella [RISOLTO]
Inserito da: antoniog - Agosto 29, 2019, 06:35:02 pm
Buongiorno. Dovrei scrivere in un file di testo tutti i campi memo di una tabella, ho scritto il seguente codice ma mi memorizza solo il primo record
Codice: [Seleziona]
procedure TMainForm.BitBtn4Click(Sender: TObject);
 Var
  F : TextFile;
  linea : string;
begin
   AssignFile(F, '/home/antonio/PRG/LazarusPRG/GeditorHTML/prov.html');
   Rewrite(F);
   cga.First;
   while not cga.eof do
     begin
      Append(F);
      linea:= cgatestoarti.Text;
      Writeln(F, linea);
      cga.Next;
     end;
   CloseFile(F);
end;     
Titolo: Re:Scrivere in un file di testo i campi memo di una tabella
Inserito da: bonmario - Agosto 29, 2019, 08:11:33 pm
L'errore può essere in lettura o in scrittura.
Eseguilo in debug, e vedi ad ogni ciclo il valore di "linea".
Se è quello che ti aspetti, c'è qualcosa che non va nella scrittura, in caso contrario, è il ciclo di lettura su "cga" che non va.

P.S. L'Append è inutile: hai appena fatto la Rewrite, e quindi dopo ogni Writeln sei già in fondo al file !

Ciao, Mario
Titolo: Re:Scrivere in un file di testo i campi memo di una tabella
Inserito da: antoniog - Agosto 29, 2019, 09:51:48 pm
Grazie bonmario per la risposta.
ho messo : 
linea:= cgatestoarti.asString;
ShowMessage(linea);
mi presenta il contenuto corretto del memo ma non lo memorizza nel file
Titolo: Re:Scrivere in un file di testo i campi memo di una tabella
Inserito da: antoniog - Agosto 30, 2019, 01:58:55 am
ho risolto assegnando il nome del file ad una variabile
Codice: [Seleziona]

procedure TMainForm.BitBtn4Click(Sender: TObject);
 Var
  F : TextFile;
  linea, nomef : string;
begin
   nomef:=Application.Location+'/prov.html';
   AssignFile(F, nomef);
   Rewrite(F);
   cga.First;
   while not cga.eof do
     begin
      // ShowMessage('numero :'+inttostr(cganumcap.value));
      linea:= cgatestoarti.asString;
      Writeln(F, linea);
      cga.Next;
     end;
   CloseFile(F);
end;
e vengono scritti tutti i campi memo della tabella nel file.
Titolo: Re:Scrivere in un file di testo i campi memo di una tabella [RISOLTO]
Inserito da: xinyiman - Settembre 01, 2019, 10:13:14 am
Per questi lavori consiglio di popolare il contenuto di una tstringlist e poi usare la sua proprietà savetofile. Quando poi devi ricaricare usate il loadfromfile
Titolo: Re:Scrivere in un file di testo i campi memo di una tabella [RISOLTO]
Inserito da: antoniog - Settembre 03, 2019, 01:35:55 am
xinyiman, proverò ad utilizzarlo, ma se avessi 2 mb di stringhe con tstringlist potrei gestirle?
Titolo: Re:Scrivere in un file di testo i campi memo di una tabella [RISOLTO]
Inserito da: bonmario - Settembre 03, 2019, 08:00:06 am
A me è capitato di gestire anche files tra i 100 ed i 200 mega.
Poi, dipende tutto anche dalle caratteristiche del PC su cui gira il programma !!!

Ciao, Mario
Titolo: Re:Scrivere in un file di testo i campi memo di una tabella [RISOLTO]
Inserito da: xinyiman - Settembre 06, 2019, 01:16:46 pm
xinyiman, proverò ad utilizzarlo, ma se avessi 2 mb di stringhe con tstringlist potrei gestirle?
Tranquillamente