Lazarus 3.2 (2024.02.28.)
Letöltés

  • Oldal:
  • 1

TÉMA:

Válasz:Fáj törlés Lazarus 0.9.30 alatt 2011 aug. 31 07:48 #847

  • miki144
  • miki144 profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 10
  • Köszönetek: 0
Sziasztok.

A Gábor féle megoldás segitett részben.
(sysutils.DeleteFile(Edit1.Text);)
köszönöm.

Neki áltam soronként visszaellenőrizni a programomat.
Ez még eltart egy darabig.
Deletefile eljárásból összesen kettődarab van a programom-ban.
Ráadásul nem is kell keresgetnem hogy hol van, mivel egy Button-esemény alatt található mindkettő.

(Molnár Gergely)
Tehát mint irtam a Deletefile-függvény csak az én általam megirt program-ban szórakozik.

Az ide beillesztett példaprogram, csak példa hogy pontisitsuk hogy melyik eljárásról van szó. Ez műnködik is.

Az én programomat azért nem illesztettem be ide , mert több száz sor.:P

Úgyhogy nekiáltam a szisztematikus hibakeresésnek, a deletefile-eljárás esetében.
Ha mind a két deletefile sort kikapcsolom az általa megirt
többszáz-soros progiban, akkor simmán F9-és forditás, és le is
generálja az exe-fájlt. Nincsen semmi gond.

Ha csak egyet is bekapcsolok abban a pillanatban jön a hibaüzenet.


A lazarus 0.9.30 verzióját használom.


A uses rész nálam jelenleg igy néz ki.
unit Unit1;

{$mode objfpc}{$H+}

interface





uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics,
Dialogs, ComCtrls,StdCtrls, ExtCtrls,Windows;





Jelenleg a deletefile-sor helyett a sysutils.DeleteFile van beillesztve a programom-ba.

Hali.

Válasz:Fáj törlés Lazarus 0.9.30 alatt 2011 aug. 31 04:30 #846

  • Molnár-Gergely
  • Molnár-Gergely profilkép
  • Új tag
  • Új tag
  • Translator and programmer/Fordító és programozó
  • Hozzászólások: 20
  • Köszönetek: 0
Milyen Lazarust és FreePascalt használsz?
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end; 
 
var
  Form1: TForm1; 
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
begin
DeleteFile(Edit1.Text);
end;
 
end.

Nekem ez gond nélkül lefut és töröltem vele a proba.txt-t a C:\proba.txt helyről...

Én Win7-et használok Lazarus 0.9.30-al 2.4.2 FPC környezet alatt.
Translator and programmer/Fordító és programozó (Multilang)
My webpage/Weboldalam:
www.sourcecodepower.com/

Válasz:Fáj törlés Lazarus 0.9.30 alatt 2011 aug. 28 17:41 #845

  • Gábor
  • Gábor profilkép
  • Adminisztrátor
  • Adminisztrátor
  • Hozzászólások: 506
  • Köszönetek: 86
A sysutils unit DeleteFile() eljárása nem okoz ilyen hibát.

Ha a uses után ott van a sysutils akkor elképzelhető (szinte biztos) hogy valahol a kódban van egy másik DeleteFile nevű eljárás is ami a hibát okozza.

Így hívatkozz a sysutils-ban találhatóra:
sysutils.DeleteFile(Edit1.Text);

A következő példa hibátlanul lefordítható:
unit Unit1; {$mode objfpc}{$H+}
interface
uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  end; 
var Form1: TForm1; 
implementation
{$R *.lfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
  DeleteFile(Edit1.Text);
end;
end.
Hogyan kérdezzünk okosan? / Mit kell tennünk kérdezés előtt? -- Lazarus 3.0 -- FPC 3.2-- GNU/Linux 5.15.0 x86_64

Fáj törlés Lazarus 0.9.30 alatt 2011 aug. 28 10:45 #844

  • miki144
  • miki144 profilkép Témaindító
  • Új tag
  • Új tag
  • Hozzászólások: 10
  • Köszönetek: 0
Sziasztok.

Érdekes jelenséget mutatott a lazarus nekem. :ohmy:

A példa progam.

Adott egy form, és azon található egy Button1-gomb nameg egy Edit1.text-komponens.
Kicsi példaprogram.


A program kód.

**************************************************************


unit Unit1;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

{ TForm1 }

TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);

begin
DeleteFile(edit1.text);
end;


end.


***************************************************************


Ez igy nekem üzemel is szépen mint példaprogram.


Na most jön a lényeg.


Mikor beilessztettem a DeleteFile(edit1.text)-sort az általam megirt több száz soros programom-ba, aszt hittem hogy ott is
üzemel ez a kis egysoros megoldás.
Sajnos az edit1.text-mező-re szükségem van, mivel ott mindig más bejegyzés jelenik meg .

A progi tömbvázlata.

A kijelőlt elem törlése gomb megnyomásakor a program törli az
adatbázis-ból az adott bejegyzés, és a hozzá tartozó egy fájlt is. a Fájlnevet illesztem be az edit1.text-be.
Ez mindig változó-fájlnevet jelent, de a kiterjesztése NEM változik.

Pl: mikor a Lisbox1-ben kiválasztom a 123-as bejegyzést, akkor
az edit1.text-ben megjelenik a 123.fcl-fájlnév.

Ez már igy készen van, ki van dolgozva.

Ime a hibaüzenet amit a Lazarus generált nekem.

kepfeltoltes.hu/110828/Hiba_www.kepfeltoltes.hu_.jpg

És szépen kiszinezi narancs szinnen a Deletefile(Edit1.text);-sort.
kepfeltoltes.hu/110828/c2_www.kepfeltoltes.hu_.jpg

Mi lehet a gond??:blink:

Ami amúgy önmagában münködik, beilesztett környezetben miért viselkedik más módon.:huh:

Előre is köszi a help-et.


Hali

  • Oldal:
  • 1