Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: Nicola - Febbraio 28, 2014, 03:13:37 pm

Titolo: Sempre su file
Inserito da: Nicola - Febbraio 28, 2014, 03:13:37 pm
Mi sto un po' scoraggiando, a memoria in TP non mi dava problemi; a seguito evento di click su bottone
apro una forma che deve visualizzare una serie di dati memorizzati su file; la form si apre tutto ok, se dichiaro "assign (fc,nf) in fondo alla unit (cioè fra begin end.); ma se lo stesso lo fasso all'interno della procedura formactivate non va e proprio non capisco perche' :-[
Codice: [Seleziona]
unit pvisualizzalistaconti;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
const
percorso='/home/nicola/Scrivania/WorkingDocs/UKUPH/Dati/ditprov/';
type
 recconti=record
           codice:integer;
           descrizione:string[30];
           posizione:string[20];
           end;
  { TFvisualizzalistaconti }

  TFvisualizzalistaconti = class(TForm)
    Lcodiceconto: TLabel;
    Ldescrizioneconto: TLabel;
    Lposizione: TLabel;
    mmostraconto: TMemo;
    procedure FormActivate(Sender: TObject);
    procedure mmostracontoChange(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Fvisualizzalistaconti: TFvisualizzalistaconti;



implementation

{$R *.lfm}

{ TFvisualizzalistaconti }

procedure TFvisualizzalistaconti.mmostracontoChange(Sender: TObject);
begin

end;

procedure TFvisualizzalistaconti.FormActivate(Sender: TObject);
var rc:recconti;
    nf:string;
    fc:file of recconti;


begin
  mmostraconto.clear;
  nf:=percorso+'conti.dat';
  assign(fc,nf);  //comando INCRIMINATO!!
  reset(fc);
  while not eof(fc) do begin
  read(fc,rc);
  mmostraconto.lines.add(inttostr(rc.codice)+'     '+rc.descrizione+'     '+rc.posizione);
                        end;
  closefile(fc);
end;
 begin

end.


l'errore:
pvisualizzalistaconti.pas(58,3) Hint: Local variable "fc" does not seem to be initialized
pvisualizzalistaconti.pas(57,16) Error: Wrong number of parameters specified for call to "Assign"
Titolo: Re:Sempre su file
Inserito da: nomorelogic - Febbraio 28, 2014, 03:53:30 pm
tempo fa un problema simile l'ho avuto anche io
credo di aver risolto usando AssignFile/CloseFile invece di Assign/Close
Titolo: Re:Sempre su file
Inserito da: Nicola - Febbraio 28, 2014, 04:22:29 pm
Grazie funziona :)
Titolo: Re:Sempre su file
Inserito da: Nicola - Febbraio 28, 2014, 04:35:35 pm
Non proprio pertinente, ma come faccio ad usare il "passo passo", se premo F7 o F8 non succede nulla, in TP mi andava in esecuzione una linea alla volta  :(
Titolo: Re:Sempre su file
Inserito da: nomorelogic - Febbraio 28, 2014, 04:55:36 pm
verifica che il compilatore generi anche le informazioni di debugging:

spunta il check che trovi come sotto
project / project options / Compiler Options / Debugging -> Generate debugging info for GDB

controlla anche che -Xs (strip symbols from executables) non sia spuntato

ovviamente quando fai la build del binario... è tutto all'opposto (no debug info + strip symbols) ;)
Titolo: Re:Sempre su file
Inserito da: Nicola - Febbraio 28, 2014, 05:07:23 pm
Ho questa schermata e mi sembra corrisponda a quanto tu dici,
io do il comando compila ctrl+F9 e mi sparisce la possibilità di premere F7 o F8
se do direttamente F7 o F8 come detto non succede nulla,
abbi pazienza ma proprio non ne esco....
Titolo: Re:Sempre su file
Inserito da: nomorelogic - Febbraio 28, 2014, 05:49:41 pm
le impostazioni sembrano corrette

verifica anche:
Tools / Options / Debugger
qua deve essere impostato sia il tipo di debugger che la path

se non funziona ancora...
non ti ha mai funzionato o in passato ha funzionato ma non funziona ora?


PS:
una volta verificate le impostazioni, invece di Ctrl+F9, fai la build (Shift+F9)

PPS:
una curiosità: che distro usi? :)
Titolo: Re:Sempre su file
Inserito da: bonmario - Febbraio 28, 2014, 06:31:06 pm
Aggiungerei anche: che versione di Lazarus usi?

Ciao, Mario
Titolo: Re:Sempre su file
Inserito da: Nicola - Marzo 01, 2014, 04:00:21 pm
Lazarus 1.0.10+dfsg-1
Vers. FPC 2.6.2
Rev. SVN 41613
I386-linux-gtk2
Titolo: Re:Sempre su file
Inserito da: bonmario - Marzo 01, 2014, 07:40:34 pm
Non credo che cambi molto, ma l'ultima ufficiale è la 1.0.14 http://www.lazarus.freepascal.org/index.php?page=downloads

Potresti provare a scaricare i sorgenti di Lazarus e compilare quelli, tanto per verificare se anche così quei tasti sono disabilitati.

Un'altra cosa che mi viene in mente: il problema l'hai sia con progetti vecchi che, ad esempio con un progetto nuovo?

Ciao, Mario
Titolo: Re:Sempre su file
Inserito da: Nicola - Marzo 02, 2014, 12:24:49 pm
con la nuova versione riesco a fare il debug passo-passo, grazie
per miei progetti l'ultimo risale .....al 1996 con tp 4  :-[
Titolo: Re:Sempre su file
Inserito da: bonmario - Marzo 02, 2014, 01:03:59 pm
Guarda, io il mese scorso sono diventato matto perché non riuscivo a fare il debug su un vecchio progetto su cui in passato avevo fatto sicuramente il debug.
Alla fine avevo scoperto che un tempo venivano salvate delle impostazioni diverse rispetto a quello che viene fatto adesso ... modificate quelle, è tornato tutto a posto.

Sono comunque contento che tu abbia risolto.


Ciao, Mario
Titolo: Re:Sempre su file
Inserito da: Nicola - Marzo 02, 2014, 02:11:54 pm
Be grazie a tutti voi!! e penso che mi risentirete
ciao  ;D ;)
Titolo: Re:Sempre su file
Inserito da: nomorelogic - Marzo 03, 2014, 09:12:21 am
sono contento che hai risolto

I386-linux-gtk2

il nome della distro?
(si sono un curiosone, io uso Sabayon :) )
Titolo: Re:Sempre su file
Inserito da: Nicola - Marzo 03, 2014, 09:23:55 am
ehm dove lo trovo ?  :-[
Titolo: Re:Sempre su file
Inserito da: nomorelogic - Marzo 03, 2014, 09:46:05 am
ehm dove lo trovo ?  :-[


Codice: [Seleziona]
uname -a

lo dovrebbe dire
Titolo: Re:Sempre su file
Inserito da: Nicola - Marzo 03, 2014, 09:59:39 am
Lo dice:
Linux nicola 3.11.0-17-generic #31-Ubuntu SMP Mon Feb 3 21:53:31 UTC 2014 i686 athlon i686 GNU/Linux