mod atelerix plugin "log" speicherproblem in multiblen files

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Dragon
Beiträge: 162
Registriert: Mi 31. Jul 2013, 15:07
OS, Lazarus, FPC: Ubuntu 16.04, CodeTyphon 5.80

mod atelerix plugin "log" speicherproblem in multiblen files

Beitrag von Dragon »

Ich habe das eine Beispiel von dem "astelerix" IRC bot modifiziert, genauer gesagt das logger plugin.
Doch beim speichern habe ich ein problem.
wiso geht das

Code: Alles auswählen

procedure LogAdd(s: String; AChannel : PChar);
var sl: TStringList;
begin
  sl := TStringList.Create;
  try
    sl.LoadFromFile('./' + AChannel + '-' + Datetostr(now));
  except
 
  end;
 
    try
    sl.Add('<'+TimeToStr(now)+'> '+s);
    sl.SaveToFile('./' + AChannel + '-' + Datetostr(now));
    finally
  sl.Free;
    end;
  end;   


aber das nicht. Es stürtzt mit "An unhandled exception occurred at [......] EInOutError: Access denied" ab, bei mehr als einem Channel.

Code: Alles auswählen

procedure LogAdd(s: String; AChannel : PChar);
var sl: TStringList;
begin
  sl := TStringList.Create;
  try
    sl.LoadFromFile('./' + 'logs/' + AChannel + '/' + Datetostr(now));
  except
    mkdir('./logs');
    mkdir('./logs/' + AChannel);
  end;
 
    try
    sl.Add('<'+TimeToStr(now)+'> '+s);
    sl.SaveToFile('./' + 'logs/' + AChannel + '/' + Datetostr(now));
    finally
  sl.Free;
    end;
  end

(keines der beiden codes sind das original sind beide modifizierte)

Michl
Beiträge: 2505
Registriert: Di 19. Jun 2012, 12:54

Re: mod atelerix plugin "log" speicherproblem in multiblen f

Beitrag von Michl »

Was ist, wenn ein Ordner schon existiert? Daher z.B. so:

Code: Alles auswählen

  except
    begin
      if not DirectoryExists('./logs') then mkdir('./logs');
      if not DirectoryExists('./logs/' + AChannel) then mkdir('./logs/' + AChannel);
    end;
  end;

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 

Dragon
Beiträge: 162
Registriert: Mi 31. Jul 2013, 15:07
OS, Lazarus, FPC: Ubuntu 16.04, CodeTyphon 5.80

Re: mod atelerix plugin "log" speicherproblem in multiblen f

Beitrag von Dragon »

Ich hab mal getestet was du vorgeschlagen hast Michl. Es funktioniert, danke für die hilfe.

Antworten