Avatar billede lifeweb Nybegynder
08. september 2004 - 08:52 Der er 8 kommentarer

Lukning efter sletning

Hej...

Jeg har følgende kode:
procedure Tsletgamlefiler.FormShow(Sender: TObject);
var
linje,i,y:integer;
s:string;
begin
initialer.Lines.LoadFromFile('c:/brugere.wf');
linje := 0;
while linje < sletgamlefiler.initialer.Lines.count do
begin
s:=sletgamlefiler.initialer.lines.Strings[linje];
ResolveNextToken(s,',');
sletgamlefiler.initialer.lines.strings[linje] := ResolveNextToken(s,',');
linje:=linje+1
end;
memo1.Clear;
i:=5;
while i < 15 do
begin
  tilfoejfilnavn(datetostr((date()-i)));
  i := i+1      ;
end;
y:=0 ;
while y < memo1.Lines.Count do
begin
DeleteFile('c:/test/kalendere/'+memo1.Lines.Strings[y]+'.txt');
y:=y+1
end;
close;
end;

Denne kode køres når formen vises, hvilket jeg gør fra en anden form med showmodal...

Jeg vil, som også ses, gerne at formen lukkes så snart den har slettet de angivne filer med deletefile...

Mit problem er såmænd bare: den lukker ikke...

anyone?
Avatar billede borrisholt Novice
08. september 2004 - 08:54 #1
I stedet for Close så skriv ModalResult := mrOK.

Jens B
Avatar billede lifeweb Nybegynder
08. september 2004 - 09:55 #2
det virker desværre ikke...
Avatar billede hrc Mester
08. september 2004 - 10:35 #3
Prøv med denne her:

  PostMessage(self.Handle,WM_CLOSE,0,0);

Generelle kommentarer til din kodning:
- Jeg glad for at jeg ikke skal læse din kode til dagligt - brug dog indryk.
- Hvorfor vil du åbne en form, lave noget og lukke det igen uden at brugeren involveres?
Avatar billede borrisholt Novice
08. september 2004 - 10:43 #4
HRC >> Jeg tror  der er noget andet gald, fordi en Close eller en ModalResult := mrOk vil altså lukke formen.

Jens B
Avatar billede lifeweb Nybegynder
08. september 2004 - 10:47 #5
borrisholt: postmessage... lukkede formen - ikke de andre - men hvis der er fejl i min kode, hører jeg gerne løsningen :)

hrc: tak for hjælpen... mht. dine kommentarer, så er der indryk i min kode, disse slog bare ikke igennem på exp...
og formen åbnes for at hindre brugeren i at lave andet imens den kører... udover at slette gamle filer skal den udvides til forskellige tjek
Avatar billede hrc Mester
08. september 2004 - 10:51 #6
Et eksempel kunne være dette (med brug af store og små bogstaver bliver det hele meget lettere at læse):

procedure TSletGamleFiler.FormShow(Sender: TObject);
var
  linje,i,y : integer;
  s : string;
begin
  Initialer.Lines.LoadFromFile('c:/brugere.wf');

  linje := 0;
  while linje < Initialer.Lines.Count do
  begin
    s:=Initialer.lines[linje];
    ResolveNextToken(s,',');
    Initialer.Lines[linje] := ResolveNextToken(s,',');
    inc(linie);
  end;

  memo1.Clear;
  i:=5;
  while i < 15 do
  begin
    TilfoejFilnavn(DateToStr((date()-i)));
    inc(i);
  end;

  y:=0;
  while y < memo1.Lines.Count do
  begin
    DeleteFile('c:/test/kalendere/'+memo1.Lines[y]+'.txt');
    y:=y+1;
  end;

  PostMessage(self.Handle,WM_CLOSE,0,0);
end;

Eller varianten sådan som jeg nok ville lave det:

const // Lidt overkill her, det erkender jeg
  SletStart = 5;
  SletSlut = 15;
  BrugerFilSti = 'c:/brugere.wf';
  KalenderSti = 'c:/test/kalendere/';
  TextExt = '.txt';

procedure TSletGamleFiler.FormShow(Sender: TObject);
var
  i : integer;
  s : string;
begin
  Initialer.Lines.LoadFromFile(BrugerFilSti);

  for i := 0 to Initialer.Lines.Count - 1 do begin
    s := Initialer.Lines[i];
    ResolveNextToken(s,','); // Skipper noget data (antager jeg)
    Initialer.Lines[i] := ResolveNextToken(s,',');
  end;

  Memo1.Clear;
 
  // Lidt uklart at bruge DateToStr. Den kigger p† Windows' indstillinger og vil
  // generere filer som 12-01-2004 og 2004:12:01.
  for i := SletStart to SletSlut do
    TilfoejFilnavn(FormatDateTime('YYYYMMDD',Date - i));

  for i := 0 to Memo1.Lines.Count - 1 do
    DeleteFile(KalenderSti + Memo1.Lines[y] + TextExt);

  PostMessage(self.Handle,WM_CLOSE,0,0);
end;

Vil du ikke give mig ret i at koden generelt er lettere at læse?
Avatar billede hrc Mester
08. september 2004 - 10:53 #7
Borrisholt: Du bemærkede ikke at han kører koden i OnShow - og ModalResult virker først når formen er blevet vist.
Avatar billede borrisholt Novice
08. september 2004 - 11:23 #8
Det er rigtigt .. Det havde jeg overset.

Det er også grunden til det ikke virkede med close. Men det laver han snart om på .. Når han får flere checks .. Så vil han gerne skrive på skærmen hvad han laver så render han i problemer.


Det løses vha en timer. Men den til den sorg ;)
Jens B
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester