Autor Thema: Biug im Formula-Interpreter?  (Gelesen 250 mal)

Offline jww

  • Aktives Mitglied
  • ***
  • Beiträge: 190
  • Geschlecht: Männlich
Biug im Formula-Interpreter?
« am: 22.10.24 - 13:09:59 »
Hallo und wie üblich bei meinen Beiträgen Sorry, eine weitere Frage zur "ollen Version" zu stellen ... ich könnte mir aber denken, dass das nachfolgend beschrieben Problem auch bei neueren Versionen noch besteht - so es dort überhaupt noch doe "Formula" Unterstützung gibt.

Ich habe nun über Tage und viele Stunden versucht, einen Fehler auszumerzen der aber - so scheint es - nicht an meinem Code sonderen an einem Bug oder einer warum auch immer vorhandenen Limitierung des Interpreters für Formeln zu liegen scheint und immer zu  einem Absturz von Notes führt:

Zuerst ein paar Erklärungen:

(A) ZIEL: erstellen einer Download-Link Liste in einem "Pass-Thru-HTML" aus einer "Liste" (gleich mehr dazu).
(B) Die Realisierung erfolgt in einem Computed-Text innerhalb eines (RTF-)Body Feldes einer Maske
(C) Es sollen quasi mehrere Zeilen mit HTML Code wie '<hr><a href="##pathToFile##" download>##text##</a>' durch Zeilenumbruch getrennt, ausgegeben werden
(D) um die Ausgabe leicht modifizieren zu können, ohne programmieren zu müssen, gibt es neben dem Code-Teil noch ein Text Feld, welches einen TEXT (indirekt eine Liste, durch "|" getrennte Elemente) mit Dateinamen enthält.
(E) Das erste Element dieser Liste ist eine URL, die jedem Dateinamen vorangestellt wird


FORMEL-HINWEISE:

(1) Die unten aufgeführte Formel befindet sich in einem "Computet Text" innerhalb eines "body" RTF Felds.

(2) Die Formel bezieht einen Text, der letztendlich eine Liste darstellt, aus einem Feld namens "code_PRM", das ein Textfeld ist (OHNE Mehfachwerte)

(3) Der bezogenen Text wird in eine Liste umgewandelt

(4) Das erste Element wird in die Variable "url" geschrieben

(5) es werden die nötigen HTML-Tags in drei variable´n geschrieben (html_1 ... 3)

(6) Eine Loop geht über alle Listen-Elemente, die Dateien sind und extrahiert den n-ten Dateinamen, der in der Variablen "file" landet


PROBLEM:
Bei "kleinen" Änderungen der Texte in den html - variablen stürzt Notes ab. GANZ KONKRET NACHVOLLZIEHBAR ist folgendes:

Wenn die Zeile

     html_2 := "\" download>X";

z.B. in

    html_2 := "\" download>XXXX";

geändert wird, stürzt Notes ab.

Da ich dachte, es könne an der Anzahl Zeichen im Result-Sring liegen, habe ich schon die Zeile

      loops := @Elements(liste);

in

    loops := @Elements(liste)/2;

halbiert ... hat keine Einfluss!




Code
liste := @Explode( code_prm;"|" );
loops := @Elements(liste)/2;
html := "[<hr>" + @NewLine;

html_1 := @NewLine + "<hr><a href=\"";
[b]html_2 := "\" download>X";[/b]
html_3 := " </a> ";
html_end := @NewLine + "<hr><hr>]" + @NewLine;

url := @Subset( liste;1);

REM{ loop all list elements and produce html pass-through code };
REM { @implode( @explode( code_prm;"|" ) ; @newline);  };

@For(n := 2;  n <= loops;  n := n + 1;
   liste_use := @Subset( liste; n);
   file := @Subset( liste_use;-1);
   html := html + html_1 + url + file + html_2 + file + html_3
);

html := html + html_end;
html



Also nochmals:


Hat jemand ne Idee warum bei geringsten Änderungen Notes abstürzt?
Notes ist klasse - und ab und an zum auf den Mond schiessen.

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Antw:Biug im Formula-Interpreter?
« Antwort #1 am: 23.10.24 - 09:36:27 »
Kannst Du mal einen -anonymisierten- Inhalt des Feldes "code_prm" liefern? Ich habe testweise mit einer kurzen URL und 6 Dateinamen probiert und es stürzt nichts ab...

Ansonsten könntest Du das Ganze auch mal mit Transform probieren, vielleicht funktioniert ja Deine For-Schleife nicht.
Und Du musst unbedingt den Dateinamen mittels @URLEncode "sanitizen":
Code
liste := @Explode( code_prm;"|" );
loops := @Elements(liste);
url := @Subset( liste;1); 
fileListe := @Subset( liste; 1 - loops );
html := "[<hr>"; 
html_1 := "<hr><a href=\"";
html_2 := "\" download>Öffne Datei '";
html_3 := "'</a> ";
html_end := "<hr><hr>]"; 
fileLinks := html : @Transform( fileListe ; "file"; html_1 + url + @UrlEncode( "Domino" ; file ) + html_2 + file + html_3 ) : html_end;
@Implode( fileLinks ; @NewLine )

Mit diesen Beispieldaten:
code_prm := "http://www.test.de/|file.xml|file2.xml|file3.xml|file4.html|file5.doc|ein langer dateiname.xls";

Erhältst Du dieses Ergebnis:

[<hr>
<hr><a href="http://www.test.de/file.xml" download>Öffne Datei 'file.xml'</a> 
<hr><a href="http://www.test.de/file2.xml" download>Öffne Datei 'file2.xml'</a> 
<hr><a href="http://www.test.de/file3.xml" download>Öffne Datei 'file3.xml'</a> 
<hr><a href="http://www.test.de/file4.html" download>Öffne Datei 'file4.html'</a> 
<hr><a href="http://www.test.de/file5.doc" download>Öffne Datei 'file5.doc'</a> 
<hr><a href="http://www.test.de/ein%20langer%20dateiname.xls" download>Öffne Datei 'ein langer dateiname.xls'</a> 
<hr><hr>]


Wobei ich persönlich mir ja die doppelten Trennlinien am Anfang und am Ende sparen würde... aber das ist Geschmackssache
« Letzte Änderung: 23.10.24 - 10:00:09 von Tode »
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline jww

  • Aktives Mitglied
  • ***
  • Beiträge: 190
  • Geschlecht: Männlich
Antw:Biug im Formula-Interpreter?
« Antwort #2 am: 23.10.24 - 10:26:57 »
Hi Tode, danke für Deine Hilfe!

In meinem Feld code_PRM ssteht folgendes:

http://l123456.dynalias.com:90/merlin/video/|01 Kapitel 1 Intro.mp4|02 Sitzposition - Sitzhoehe.mp4|03 Sitzposition und Setaufbau.mp4|04 Stockhaltung.mp4|05 Rebound Training.mp4|06 Fusstechnik.mp4|07 Stickings.mp4|08 Stickings Warm Up 1.mp4|09 Stickings Warm Up 2.mp4|10 Techniktraining Intro.mp4|11 Techniktraining Uebung.mp4|12 Rudiment Training Intro.mp4|13 Rudiment Training Uebung.mp4|14 Kapitel 2 Intro.mp4|15 Bewegungspyramide.mp4|16 Polymetrik.mp4|17 Koordinationsebenen.mp4|18 Kapitel 3 Intro.mp4|19 Kapitel 4 Intro.mp4|20 Kapitel 5 Intro.mp4

Ich bin mir eigentlich auch sicher, dass es irgend ein interner Fehler sein muß, weil die Änderungen, die bei mir die Abstürze provozieren, sind reine Textänderungen in den String-Variablen.

Dir <hr>'s hab' ich nur für Testzwecke drin. EIGENTLICH sollte die page noch aufgehübscht werden, aber wenn das schon bei diesen wenigen Bytes crasht ...

Das mit dem URLEnCODE ist, by the way, ne gute Idee - danke dafür!

Mit welcher Version arbeitest Du?

Auch der Ansat zmit Transform ist interessant ... vielleicht liegt's ja sogar am FOR?
« Letzte Änderung: 23.10.24 - 10:31:15 von jww »
Notes ist klasse - und ab und an zum auf den Mond schiessen.

Offline jww

  • Aktives Mitglied
  • ***
  • Beiträge: 190
  • Geschlecht: Männlich
Antw:Biug im Formula-Interpreter?
« Antwort #3 am: 23.10.24 - 10:48:54 »
Und gleich noch ne Rückmeldung: Mit Deinem Code stürzt Notes bei mir auch nicht ab. Selbst dann nicht, wenn ich die Anzahl der files deutlich erhöhe (habe das mal verdreifacht).

Insofern: 1000 Dank für die Verbesserung meines Codes. Ich hake das für mich mal unter "FOR-Problem" ab.

Gibt mir aber doch zu denken: Da ich schon seit Jahren nur noch sporadisch mit Notes arbeite (programmierend) und fast nur noch PHP und Python bzw. c# mache, habe ich das Thema "Arbeiten mit Listen" ein wenig aus den Augen verloren. Das war ja immer schon eine Stärke von Notes/Domino.
Notes ist klasse - und ab und an zum auf den Mond schiessen.

Offline Tode

  • Moderatoren
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.883
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Antw:Biug im Formula-Interpreter?
« Antwort #4 am: 23.10.24 - 12:00:51 »
Ja, tatsächlich ist die Arbeit mit Listen die ganz große Stärke... Insofern könnte man sich sogar das Transform sparen, ein einfaches Listenaddieren hätte es auch getan:

Code
liste := @Explode( code_prm;"|" );
loops := @Elements(liste);
fileListe := @Subset( liste; 1 - loops );
url := @Subset( liste;1); 
html := "[<hr>"; 
html_1 := "<hr><a href=\"";
html_2 := "\" download>Öffne Datei '";
html_3 := "'</a> ";
html_end := "<hr><hr>]"; 
fileLinks := html : (html_1 + url + @URLEncode( "Domino" ; fileListe ) + html_2 + fileListe + html_3 ) : html_end;
@Implode( fileLinks ; @NewLine )

Ich hatte auf die Schnelle natürlich nur mit der bei mir aktuell aktivierten Version 12.0.2 getestet, kann schon sein, dass hier ein Crash gefixt wurde in irgendeiner Version....

Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline jww

  • Aktives Mitglied
  • ***
  • Beiträge: 190
  • Geschlecht: Männlich
Antw:Biug im Formula-Interpreter?
« Antwort #5 am: 29.10.24 - 19:38:17 »
Anyways. Funzt bei mir nun ohne crash, insofern: Nochmals 1000 Dank!
Notes ist klasse - und ab und an zum auf den Mond schiessen.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz