@length mit @if geht nicht?

  • Hallo


    ich steht gerade vor folgendem Problem


    Ich habe eine längere Liste (Mehrfachfeld, Text) und will die Werte darin in ein zweites Feld einlesen. Wenn ein Wert mehr als 30 Zeichen besitzt, soll es gekürzt und mit ... versehen werden.


    Das zweiete Feld ist also berechnet, Mehrfachwerte mit selben Einstellungen wie Quellfeld (heißt project)


    @left(project, 30) // geht ohne Probleme


    @Left(project;30) + @If(@Length(project)> 30; "..."; null)


    kürzt zwar richtig, setzt aber hinter allen einträgen ein ..., also auch die, wo nur 3 lang sind.


    @If(@Length(project)> 30; @Left(project;10) + "...";@Left(project;30) )


    macht das selbe, wie das darüber


    auch


    _newName := @Left(project;10);
    _newName + @If(@Length(project)> 10; "...";"");


    macht es nicht besser.


    Ich zweifle grad etwas an meinem Verstand ;)


    Kann mir jemand weiterhelfen?

  • Das Problem ist, daß du bei einer Textliste ein Zahlenliste mit den Längen zurückbekommst, und wenn da halt eines über 30 Zeichen ist dann wird an alle was angehängt.


    So wie du es haben willst musst du die einzelnen Elemente der Textliste mit einer Schleife durchgehen und die Prüfung für jedes Element einzeln machen



    Bitte in Zukunft aufs Themenpräfix achten

  • Danke für den Hinweis.


    Mh, wenn ich
    @For(
    _i:=1;
    _i<=@Elements(project);
    _i := _i+1;
    @Return(project[_i])
    )


    schreibe, bekomme ich nur das aller erste Element ausgegeben, die folgenden nicht.


    @elements liefert aber 173 ergebinsse, also müsste ich dich auch 173 einträge bekommen, oder?

  • Logischerweise, weil du mit @Return gleich beim ersten Element aussteigst.
    Du musst da intern wieder eine Liste aufbauen.


    Schau dir mal die Hilfe zu @For an, da findest du entsprechende Beispiele

  • bzw so komplett


    Code
    @For(
    _i:=1;
     _i<=@Elements(project);
    _i := _i+1;
    _text := _text + @Left(project[_i];30) + @if(@Length(project[_i]) >30; " ...";"") + @NewLine );
    @Return(_text);


    falls es mal jemand braucht



    Danke ;)