Raspbian Autostart (.desktop) Programm findet keine Datein

Für sonstige Unterhaltungen, welche nicht direkt mit Lazarus zu tun haben
Antworten
Thandor
Beiträge: 153
Registriert: Sa 30. Jan 2010, 18:17
OS, Lazarus, FPC: Windows 10 64Bit/ lazarus 3.0 mit FPC 3.2.2 (32Bit + 64bit)
CPU-Target: 64Bit
Wohnort: Berlin

Raspbian Autostart (.desktop) Programm findet keine Datein

Beitrag von Thandor »

Hallo,

ich habe ein Programm entwickelt, welches auf einem RaspberryPi laufen und beim Booten automatisch gestartet werden soll.
Das Programm ist ein Desktopanwendung.

Für den Autostart habe ich in "~/.config/autostart/" eine Datei "kasse.desktop" angelegt.

Code: Alles auswählen

 
[Desktop Entry]
Name=Kasse
Comment="simple Cashdesk"
Type=Application
Path=/home/pi/Projekte/Kasse/
Exec=/home/pi/Projekte/Kasse/Registrierkasse
#Terminal=false
 


mein Programm wird nun auch nach dem Booten gestartet aber meine .json-Datein werden nicht gefunden. Die Fehlermeldung lautet:
Fehlermeldung.png
Fehlermeldung.png (10.74 KiB) 1450 mal betrachtet


Die Dateien liegen aber im angegebenen Pfad:
Konsole.png


was mache ich falsch?

Code: Alles auswählen

 
 
//-----------------------------------------------------------------------------
procedure TKasse.FormCreate(Sender: TObject);
//-----------------------------------------------------------------------------
var i                               : Integer;
    json, jsonArticles, jsonArticle : TJSONData;
    jsonContent                     : String;
    Content                         : String;
    jsonFile                        : TEXT;
begin
 
  self.lbVersion.Caption := 'Version: ' + VERSION;
 
  // Read json-file.
  AssignFile(jsonFile, 'asset/articles.json');
  try
    Reset(jsonFile);
    while not eof(jsonFile) do begin
      Readln(jsonFile, Content);
      jsonContent := jsonContent + Content;
    end;
    CloseFile(jsonFile);
 
  except
    on E: EInOutError do begin
      Application.MessageBox(
        PChar(
          'Die Datei "' +
          ExtractFilePath(ParamStr(0)) +
          'asset/articles.json" konnte nicht gelden werden.'
        ),
        'Schwerwiegender Fehler', MB_ICONASTERISK + MB_OK);
      Rewrite(jsonFile);
      CloseFile(jsonFile);
    end;
  end;
 
  ...
 

itjump
Beiträge: 179
Registriert: Do 13. Okt 2016, 18:35
Wohnort: Winnenden

Re: Raspbian Autostart (.desktop) Programm findet keine Date

Beitrag von itjump »

Gib mal ein

Code: Alles auswählen

ls -la /home/pi/Projekte/Klasse/asset
und poste das Ergebnis hier. Vielleicht hast du die entsprechenden Rechte nicht gesetzt. Wobei normalerweise zumindest Leserechte gesetzt sind.

Thandor
Beiträge: 153
Registriert: Sa 30. Jan 2010, 18:17
OS, Lazarus, FPC: Windows 10 64Bit/ lazarus 3.0 mit FPC 3.2.2 (32Bit + 64bit)
CPU-Target: 64Bit
Wohnort: Berlin

Re: Raspbian Autostart (.desktop) Programm findet keine Date

Beitrag von Thandor »

Code: Alles auswählen

 
pi@raspberrypi-touch:~ $ ls -la /home/pi/Projekte/Kasse/asset/
insgesamt 28
drwxr-xr-x 5 pi pi 4096 Okt 29 18:53 .
drwxr-xr-x 5 pi pi 4096 Nov  2 12:11 ..
-rw-r--r-- 1 pi pi 2054 Okt 29 16:52 articles.json
drwxr-xr-x 2 pi pi 4096 Okt 29 18:53 backup
drwxr-xr-x 2 pi pi 4096 Okt 23 14:31 images
drwxr-xr-x 2 pi pi 4096 Okt 29 18:53 staff
-rw-r--r-- 1 pi pi 1522 Okt 29 17:11 staff.json
 

itjump
Beiträge: 179
Registriert: Do 13. Okt 2016, 18:35
Wohnort: Winnenden

Re: Raspbian Autostart (.desktop) Programm findet keine Date

Beitrag von itjump »

OK, die Leserechte sind in jedem Fall gegeben. Ich kenne mich mit Jason nicht gut genug aus, aber man dürfte ja wohl keine Ausführrechte benötigen.
Aber ich denke ich weiß wo der Fehler liegen könnte. Um das File Einzulesen gib mal den Absoluten Pfad an, oder mach das über

Code: Alles auswählen

getenvironmentvariable('HOME')
denn soweit ich das Richtig verstehe, hast du dein Programm ja in einem Unterverzeichnis von home und damit ist die relative Pfadangabe hinfällig und wird nicht Funktionieren. Korrigiere mich gerne, wenn ich das Falsch verstanden habe :D

Thandor
Beiträge: 153
Registriert: Sa 30. Jan 2010, 18:17
OS, Lazarus, FPC: Windows 10 64Bit/ lazarus 3.0 mit FPC 3.2.2 (32Bit + 64bit)
CPU-Target: 64Bit
Wohnort: Berlin

Re: Raspbian Autostart (.desktop) Programm findet keine Date

Beitrag von Thandor »

Hallo Danke,

ich habe mir meine Pfadangaben noch mal genauer angesehen:

Code: Alles auswählen

AssignFile(jsonFile, 'asset/articles.json');

hier also ein relativer Pfad

und in der Fehlermeldung:

Code: Alles auswählen

 
PChar(
          'Die Datei "' +
          ExtractFilePath(ParamStr(0)) +
          'asset/articles.json" konnte nicht gelden werden.'
        )
 

hier habe ich ExtractFilePath(ParamStr(0)) drin, der ja den richtigen Pfad ausgibt.
Manchmal sieht man den Wald vor lauter Bäumen nicht.

Um solche "Verwirrung" in Zukunft zu vermeiden habe ich jetzt eine Variable für den Pfad angelegt und nutze diese jetzt für das Assign und die Fehlermeldung.

Code: Alles auswählen

 
  jsonPath := ExtractFilePath(ParamStr(0)) + 'asset/staff.json';
  AssignFile(jsonFile, jsonPath);     
 


Code: Alles auswählen

 
  except
    on E: EInOutError do begin
      Application.MessageBox(
        PChar(
          'Die Datei "' +
          jsonPath +
          '" konnte nicht gelden werden.'
        ),
        'Schwerwiegender Fehler', MB_ICONASTERISK + MB_OK);
      Rewrite(jsonFile);
      CloseFile(jsonFile);
    end;     
 


jetzt startet das Programm auch so wie es soll mit Autostart.

itjump
Beiträge: 179
Registriert: Do 13. Okt 2016, 18:35
Wohnort: Winnenden

Re: Raspbian Autostart (.desktop) Programm findet keine Date

Beitrag von itjump »

Hab ich es doch gewusst. Mir geht das oft genauso, das ich irgendwas beim Programmieren vergesse und dann den Fehler einfach nicht finde, aber ich bin viel besser darin als früher, weil ich meist ohne Debugger die Fehler suche.

Antworten