Kann mir Lazarus bei meinem Anliegen helfen?

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
ObiTobi
Beiträge: 5
Registriert: So 25. Feb 2024, 20:44

Kann mir Lazarus bei meinem Anliegen helfen?

Beitrag von ObiTobi »

Moin,

vielleicht nicht so ganz passendes Titel, aber etwas besseres was auch kurz und knackig ist fiel mir nicht ein.

So ganz grob - ich bin kein Programmierer. Vor über 30 Jahren hatte ich relativ kurz etwas mit Pascal zu tun (alles komplett vergessen). Dann später etwas C++ (auch alles weg) und die letzte Jahre etwas Bash, PowerShell, AppleScript - je nach Bedarf was ich gerade brauchte.

Jetzt brauche ich wohl doch etwas "Pascal". Hier blicke ich nicht so ganz durch. Damals gab es Borland und heute.....

Na ja. Ich versuche mit meinem Anliegen. Für die Verwaltung von meinen Bildern nutze ich eine Anwendung "Photo Supreme". Die Anwendung stellt eine API Schnittstelle und auch ein Script-Editor zur Verfügung. Die Schnittstelle ist laut Entwickler "PascalScript" (was auch immer da weiser sein mag). Ich interpretiere es so, dass in dem Editor den die Anwendung zur Verfügung stellt, gibt man sein Code ein und die Anwendung kümmert sich um den Rest.

Die API ist so https://repository.idimager.com/documentation/ beschrieben.

Um eine andere Anwendung zu starten gibt es so eine prozedur

Code: Alles auswählen

procedure RunApp(TheApp: Widestring; How2Show: Integer = 1; AParams: WideString = ''; AEnvironment: WideString = '');
So naiv wie ich vorgegangen bin hatte ich in dem Editor folgendes eingegeben:

Code: Alles auswählen

const TheApp = 'C:\\Windows\\System32\\Notepad.exe';
const AppParam = 'C:\\Temp\\Testfile.txt';

procedure RunApplication;
begin
RunApp(TheApp,1,AppParam,nil);
end;

RunApplication;
Das verursacht einen Script Runtime Error.

So zu sagen, stehe ich im Moment wie Ochs vom Berg und habe vorerst 3 Fragen
1. Was ist falsch an dem versuch?
2. Was für Lektüre wäre zu empfehlen um etwas "reinzukommen"
3. Ist das was die Anwendung bereitstellt in brauchbaren/ gewissen Umfang durch eine Empfehlung aus Punkt 2 besser zu verstehen?

Ach doch noch 4-te, womöglich sogar wichtigste Frage - wäre ich in dem Forum "richtig" oder ist das vom Entwickler genannte "PascalScript" was ganz anderes?

Danke und Gruß
Tobi

TSchnuckenbock
Beiträge: 72
Registriert: Do 20. Jul 2017, 23:47
OS, Lazarus, FPC: Win7 und Win10
CPU-Target: xxBit
Wohnort: Südheide (Schnuckenland)

Re: Kann mir Lazarus bei meinem Anliegen helfen?

Beitrag von TSchnuckenbock »

Zu Pascal Script fällt mir das da ein:

https://de.wikipedia.org/wiki/Pascal_Script

Vielleicht ist das ein passender Einsteig für dich.

Soner
Beiträge: 624
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Kann mir Lazarus bei meinem Anliegen helfen?

Beitrag von Soner »

Versuch mal:

Code: Alles auswählen

procedure RunApplication;
var TheApp, AppParam: string;
begin
  TheApp :=  'C:\Windows\System32\Notepad.exe';
  AppParam := 'C:\Temp\Testfile.txt';
  RunApp(TheApp,1,AppParam,nil);
end;

begin
 RunApplication;
end.

CCRDudeLaz
Beiträge: 29
Registriert: Do 25. Jan 2024, 08:33
OS, Lazarus, FPC: Win/macOS/Linux (L trunk FPC trunk)
CPU-Target: 32+64

Re: Kann mir Lazarus bei meinem Anliegen helfen?

Beitrag von CCRDudeLaz »

ObiTobi hat geschrieben:
So 25. Feb 2024, 21:19
1. Was ist falsch an dem versuch?
Soner hat es ja schon im Code, aber noch zur Erklärung: Backslashes doppelt zu escapen braucht man oft (C, Bash, &c), aber in Pascal musst / darfst Du das nicht.

ObiTobi
Beiträge: 5
Registriert: So 25. Feb 2024, 20:44

Re: Kann mir Lazarus bei meinem Anliegen helfen?

Beitrag von ObiTobi »

Moin,

danke für die Antworten.
Bzgl dem Code und der Antwort von @Soner - leider an der Fehlermeldung ändert es nichts.
Ist auch so, dass scheinbar im PascalScript am Ende beim "end" kein Punkt stehen darf (Syntaxfehler)

Soner
Beiträge: 624
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Kann mir Lazarus bei meinem Anliegen helfen?

Beitrag von Soner »

ObiTobi hat geschrieben:
Mo 26. Feb 2024, 10:17
...
Ist auch so, dass scheinbar im PascalScript am Ende beim "end" kein Punkt stehen darf (Syntaxfehler)
Doch, ich verwende PascalScript in meinem Programm auch. Bei Fehler gibt mein Programm Fehlerstelle und Fehlercode aus, dass müsste eigentlich dein Programm auch machen.

Du rufst es so aus, das habe gar nicht beachtet:
RunApp(TheApp,1,AppParam,nil);

Du darfst nicht für String-Variable nil übergeben, man macht bei Stringvariable für leere Werte ''. Nil ist für Zeiger.
Ändere es in:

Code: Alles auswählen

RunApp(TheApp,1,AppParam,'');
Wenn das nicht hilft, dann ändere Typen von den Variablen TheApp und AppParam zu WideString. Die Funktion RunApp erwartet WideStrings.
procedure RunApp(TheApp: Widestring; How2Show: Integer = 1; AParams: WideString = ''; AEnvironment: WideString = '');

Code: Alles auswählen

procedure RunApplication;
var TheApp, AppParam: Widestring;
begin
  TheApp :=  'C:\Windows\System32\Notepad.exe';
  AppParam := 'C:\Temp\Testfile.txt';
  RunApp(TheApp,1,AppParam,'');
end;

begin
 RunApplication;
end.
Du kannst es auch vereinfachen.

Code: Alles auswählen

var TheApp, AppParam: Widestring;
begin
  TheApp :=  'C:\Windows\System32\Notepad.exe';
  AppParam := 'C:\Temp\Testfile.txt';
  RunApp(TheApp,1,AppParam,'');
end.

kirchfritz
Beiträge: 172
Registriert: Mo 3. Jan 2011, 13:34
OS, Lazarus, FPC: Win10 (L 3.0 FPC 3.2.2)
CPU-Target: 64Bit
Wohnort: Nürnberg

Re: Kann mir Lazarus bei meinem Anliegen helfen?

Beitrag von kirchfritz »

Das hier finde ich in Deiner Doku:
RunApp.png
RunApp.png (24.71 KiB) 4911 mal betrachtet

ObiTobi
Beiträge: 5
Registriert: So 25. Feb 2024, 20:44

Re: Kann mir Lazarus bei meinem Anliegen helfen?

Beitrag von ObiTobi »

Soner hat geschrieben:
Mo 26. Feb 2024, 23:08
Doch, ich verwende PascalScript in meinem Programm auch. Bei Fehler gibt mein Programm Fehlerstelle und Fehlercode aus, dass müsste eigentlich dein Programm auch machen.
Ja macht es auch. Genau der Punkt wird angemeckert.
Screenshot 2024-02-27 141655.png
Screenshot 2024-02-27 141655.png (32.43 KiB) 4868 mal betrachtet
Soner hat geschrieben:
Mo 26. Feb 2024, 23:08
Du darfst nicht für String-Variable nil übergeben, man macht bei Stringvariable für leere Werte ''. Nil ist für Zeiger.
OK, wieder was gelernt.
Ohne Punkt und der Änderung wegen NIL, funktioniert es.
Vielen Dank

Jetzt wäre noch ggf. offen die Frage nach einer Lektüre die mir den wieder einstieg erleichtert. Es ist nicht mein Anliegen, wegen jedem Pipikram fragen und hoffen, dass es jemand für mich löst.
Ich habe hier irgendwo so ein Lazarus Handbuch o..ä war der Titel gesehen. Wäre das was oder doch lieber/ besser etwas anderes?

Soner
Beiträge: 624
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Kann mir Lazarus bei meinem Anliegen helfen?

Beitrag von Soner »

Merkwürdig, alle meine Scripte haben Punkt am Ende und die laufen fehlerfrei, wahrscheinlich wieder so ein Delphi/Lazarus/Windows/Linux ding.
Es gibt kaum Dokumentation für PascalScript, Bücher schon gar nicht. TSchnuckenbock hat oben Link angegeben das ist ein guter Anfang.
Wenn du Pascal kannst, dann kannst du auch PascalScript, deshalb wahrscheinlich kein Dokumentation.
Vielleicht hat der Programmierer von deinem Programm Dokumentation zur Verfügung gestellt, schau im Programmordner oder Hompage nach.
Hier sind 2 IDE-Programme die PascalScript benutzen, die haben haben sehr viele Dokumentationen, besonders MaxBox:
- MaxBox,
- pdScript.

Viel Glück.

ObiTobi
Beiträge: 5
Registriert: So 25. Feb 2024, 20:44

Re: Kann mir Lazarus bei meinem Anliegen helfen?

Beitrag von ObiTobi »

Soner hat geschrieben:
Di 27. Feb 2024, 19:07
Merkwürdig, alle meine Scripte haben Punkt am Ende und die laufen fehlerfrei, wahrscheinlich wieder so ein Delphi/Lazarus/Windows/Linux ding.
Ich frag mal den Entwickler.
Soner hat geschrieben:
Di 27. Feb 2024, 19:07
Wenn du Pascal kannst, dann kannst du auch PascalScript, deshalb wahrscheinlich kein Dokumentation.
Wird wahrscheinlich auch stimmen.
Soner hat geschrieben:
Di 27. Feb 2024, 19:07
Vielleicht hat der Programmierer von deinem Programm Dokumentation zur Verfügung gestellt, schau im Programmordner oder Hompage nach.
Leider nicht und dadurch uns andere Dinger ist es für mich nicht unbedingt einfacher. Er stellt einige Scripte selbst zur Verfügung. 2-3 mal habe ich mir da etwas angeschaut und zack ausgerechnet immer Funktionen rausgepickt die in seiner APi Beschreibung überhaupt nicht auftauchen.
In meinem Beispiel habe ich ihn jetzt z.B gefragt was für Werte das How2Show haben kann und was diese bewirken. Antwort "wird nicht genutzt". Dann was das AEnviroment macht - Antwort "link zu Microsoft zu CreateProcessA function (processthreadsapi.h)".
Vielleicht liege ich falsch, meine aber selbst als Programmierer (was ich nicht bin), kann ich doch nicht riechen was er sich dabei gedacht hat und was genutzt oder nicht genutzt wird.
Na ja - so lange ich jetzt etwas Pascal lerne und ihn und ggf. hier fragen kann, wird mit meinem Vorhaben langsam aber sicherlich schon voran gehen :D
Soner hat geschrieben:
Di 27. Feb 2024, 19:07
Viel Glück.
Danke, kann ich gut gebrauchen.

Soner
Beiträge: 624
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Kann mir Lazarus bei meinem Anliegen helfen?

Beitrag von Soner »

ObiTobi hat geschrieben:
Di 27. Feb 2024, 21:26
..
In meinem Beispiel habe ich ihn jetzt z.B gefragt was für Werte das How2Show haben kann und was diese bewirken. Antwort "wird nicht genutzt". Dann was das AEnviroment macht - Antwort "link zu Microsoft zu CreateProcessA function (processthreadsapi.h)".
...
Das ist nicht gut, wer soll das ahnen, dass die Variable AEnvironment gleiche Beudeutung wie bei CreateProcess hat.
Aber ich habe jetzt seine Seite und API-Dokumentation angeschaut und er hat es gut gemacht, gute Funktions- und Variablennamen gewählt und einiges auch Beschrieben. Das sieht man bei einem Program das mit Delphi/Lazarus geschrieben ist selten. Jeder der Pascal oder PascalScript kennt kommt automatisch damit klar, naja wir als Pascal-Programmierer kennen schon fast alle Funktionen schon von irgendwoher aber für dich als neuling ist das schon schwer.
Wenn du in dem Programm API nachschaust dann konzentriere dich auf "Types, Variables, Constants, Functions and Procedures" Abschnitte. Besonders auf "Functions and Procedures"-Abschnitte. Die wirst du im Skript verwenden und als Parameter die anderen Sachen.
Lies einfach Essential Pascal von Marc Cantu das wird dir helfen, es sind 50 Seiten glaube ich.

ObiTobi
Beiträge: 5
Registriert: So 25. Feb 2024, 20:44

Re: Kann mir Lazarus bei meinem Anliegen helfen?

Beitrag von ObiTobi »

Soner hat geschrieben:
Mi 28. Feb 2024, 00:26
es sind 50 Seiten glaube ich.
Hehe, die ersten oder letzten 90 Seiten hast Du unterschlagen. Wenn ich nicht plötzlich was anderes angezeigt bekomme sind es 140 Seiten :)
Macht nichts. Danke Dir.

Noch vielleicht eine abschließende Frage.
Er stellt die API zur Verfügung. Man kann sich also Scripte schreiben und seine Klassen, Funktionen usw. nutzen. Das heißt aber wenn er etwas über die API nicht zur Verfügung stellt, dann kann man es auch nicht extern einbinden oder?
Um es etwas konkreter zu beschreiben, ohne es wirklich geprüft zu haben.

Wegen Stringverarbeitung hätte ich gerne RegEx zur Verfügung. So wie ich es gesehen habe gibt es für "alle?" Pascal Varianten RegEx Bibliotheken. Wenn über seine API RegEx nicht vorgesehen ist - wird man eben keine solche Bibliothek einbinden/ nutzen können. Richtig oder?

Soner
Beiträge: 624
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Kann mir Lazarus bei meinem Anliegen helfen?

Beitrag von Soner »

ObiTobi hat geschrieben:
Mi 28. Feb 2024, 20:11
...
Noch vielleicht eine abschließende Frage.
Er stellt die API zur Verfügung. Man kann sich also Scripte schreiben und seine Klassen, Funktionen usw. nutzen. Das heißt aber wenn er etwas über die API nicht zur Verfügung stellt, dann kann man es auch nicht extern einbinden oder?
Um es etwas konkreter zu beschreiben, ohne es wirklich geprüft zu haben.
...
Genau, du kannst nur Funktionen, Klassen und Variablen benutzen, die er zur Verfügung gestellt hat, sonst nichts.
Schaue im Ordner "..\lazarus\components\PascalScript\Source" nach "uPSR_*.pas" Dateien nach. Er hat bestimmt einiges davon auch automatisch zur Verfügung gestellt. Ruf einfach eine Funktion aus einer dieser Datei im Script auf, wenn es "die Funktion ist unbekannt" o.ä. Fehlermeldung anzeigt, dann hat er diese Unit nicht eingebunden.

Wenn du viel mit Grafik zu tun hast, dann schaue BGRABitmap nach. Die Jungs sind sehr aktiv und die haben damit Malprogramm Lazpaint geschrieben.
Sie sind im englischen Forum.

Antworten