- Beiträge: 132
Überlanges Textfeld sinnvoll teilen
- Ralf Birk
- Autor
- Offline
- Benutzer
Weniger
Mehr
1 Jahr 7 Monate her #4817
von Ralf Birk
Überlanges Textfeld sinnvoll teilen wurde erstellt von Ralf Birk
Hallo Robert,
ich muss hier Lieferlisten bearbeiten, auf deren Inhalt ich leider keinen Einfluss habe.
Mit diversen Zeilenumbrüchen, Steuerzeichen usw. in einzelnen Datenfeldern komme ich klar.
Bei einigen Namensfeldern wurden aber leider "Romane" hineingeschrieben. Diese müsste ich sinnvoll auf bis zu vier Felder verteilen (Das würde nach jetzigen Stand ausreichen)
Ich habe vor einigen Jahren ein C++ für dieses Problem eingesetzt (war bestimmt von dir).
Leider funktioniert dieses nicht wie gewünscht.
Im Script gibt man die max. Datenfeldlänge ein (in diesem Fall 30) die die einzelnen Segmente getrennt werden (immer Rückwärts bis zum letzten Blank).
Beim ersten Teil funktioniert die noch, dann werden nur noch kleine Teilstücke zerlegt, so dass am Ende Teile der Feldes fehlen.
Wo könnte der Fehler in dem Script sein?
Hier der längste Datensatz im Eingangsdatenfeld:
Testname1234 Musterpunk c/o ma-Testhause, Warenannahme3 , Testname1234/Musterpunk (ABC Service GmbH & Co KG)
Aus dem Script kommt:
Testname1234 Musterpunk c/o-#-ma-Testhause,-#-Warenannahme3-#-,-#-Testname1234/Musterpunk-#-(ABC-#-Service-#-GmbH-#-&-#-Co-#-KG)
was in der Ausgabe der 4 Felder "Testname1234 Musterpunk c/o;ma-Testhause,;Warenannahme3" ergibt
Korrekt abgearbeitet sollte es so aussehen:
Testname1234 Musterpunk c/o;ma-Testhause, Warenannahme3 ,;Testname1234/Musterpunk (ABC;Service GmbH & Co KG)
Hast du einen Tip? Ich denke ähnliche Probleme kommen bestimmt auch bei anderen vor.
Ich hänge mal eine Beispieldefinition mit dem Script an...
PS: Die Geschickte mit dem erweiterten MAX-Adapter habe ich aufgegeben, da ich den Fehler nicht weg bekam.
Gruß Ralf
ich muss hier Lieferlisten bearbeiten, auf deren Inhalt ich leider keinen Einfluss habe.
Mit diversen Zeilenumbrüchen, Steuerzeichen usw. in einzelnen Datenfeldern komme ich klar.
Bei einigen Namensfeldern wurden aber leider "Romane" hineingeschrieben. Diese müsste ich sinnvoll auf bis zu vier Felder verteilen (Das würde nach jetzigen Stand ausreichen)
Ich habe vor einigen Jahren ein C++ für dieses Problem eingesetzt (war bestimmt von dir).
Leider funktioniert dieses nicht wie gewünscht.
Im Script gibt man die max. Datenfeldlänge ein (in diesem Fall 30) die die einzelnen Segmente getrennt werden (immer Rückwärts bis zum letzten Blank).
Beim ersten Teil funktioniert die noch, dann werden nur noch kleine Teilstücke zerlegt, so dass am Ende Teile der Feldes fehlen.
Wo könnte der Fehler in dem Script sein?
Hier der längste Datensatz im Eingangsdatenfeld:
Testname1234 Musterpunk c/o ma-Testhause, Warenannahme3 , Testname1234/Musterpunk (ABC Service GmbH & Co KG)
Aus dem Script kommt:
Testname1234 Musterpunk c/o-#-ma-Testhause,-#-Warenannahme3-#-,-#-Testname1234/Musterpunk-#-(ABC-#-Service-#-GmbH-#-&-#-Co-#-KG)
was in der Ausgabe der 4 Felder "Testname1234 Musterpunk c/o;ma-Testhause,;Warenannahme3" ergibt
Korrekt abgearbeitet sollte es so aussehen:
Testname1234 Musterpunk c/o;ma-Testhause, Warenannahme3 ,;Testname1234/Musterpunk (ABC;Service GmbH & Co KG)
Hast du einen Tip? Ich denke ähnliche Probleme kommen bestimmt auch bei anderen vor.
Ich hänge mal eine Beispieldefinition mit dem Script an...
PS: Die Geschickte mit dem erweiterten MAX-Adapter habe ich aufgegeben, da ich den Fehler nicht weg bekam.
Gruß Ralf
Anhänge:
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
1 Jahr 7 Monate her #4819
von FlowHeater-Team
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
FlowHeater-Team antwortete auf Überlanges Textfeld sinnvoll teilen
Hallo Ralf,
das Skript war fehlerhaft. Hier die korrigierte C# Version für den .NET Script Heater .
das Skript war fehlerhaft. Hier die korrigierte C# Version für den .NET Script Heater .
Code:
// hier die Maximale Zeichenketten Länge pro Spalte eintragen.
int MaxLen = 30;
string sTrennzeichen = "-#-";
public object DoWork()
{
if (InValues.Length != 1)
throw new ArgumentException("Es wird ein Eingangsparameter erwartet!");
string sIN = (string)InValues[0].GetString();
string [] sParts = sIN.Split(new char [] {' '}, StringSplitOptions.RemoveEmptyEntries);
string sRet = String.Empty;
int aktLen = 0;
foreach (string sPart in sParts)
{
if ((aktLen + sPart.Length + 1) > MaxLen)
{
// Trennzeichen enfügen
sRet += sTrennzeichen;
aktLen = sPart.Length;
}
else
{
if (aktLen != 0)
{
aktLen++;
sRet += " ";
}
aktLen += sPart.Length;
}
sRet += sPart;
}
return sRet;
}
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Ralf Birk
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 132
1 Jahr 7 Monate her - 1 Jahr 7 Monate her #4820
von Ralf Birk
Ralf Birk antwortete auf Überlanges Textfeld sinnvoll teilen
Hallo Robert,
vielen Dank....
Mit dem korrigierten Script ist das Ergebnis perfekt.
Hast du dich über den merkwürdigen Replace-Heater in dem Beispiel gewundert?
Das war die einzige Möglichkeit bei 2 und mehr definierten Zeichen hintereinander in einem Datenfeld alles über 1. Stelle zu eliminieren.
Oder gibt es mit den "Standard-Heatern" eine Möglichkeit sollche "wirren" Daten zu reparieren um diese automatisiert zu verwenden?
Beispiel:
"Hamburger Druck GmbH & Co.KG / Warenannahme DS über BZ-Auffahrt (Beschilderung beachten)"
Gruß Ralf
vielen Dank....
Mit dem korrigierten Script ist das Ergebnis perfekt.
Hast du dich über den merkwürdigen Replace-Heater in dem Beispiel gewundert?
Das war die einzige Möglichkeit bei 2 und mehr definierten Zeichen hintereinander in einem Datenfeld alles über 1. Stelle zu eliminieren.
Oder gibt es mit den "Standard-Heatern" eine Möglichkeit sollche "wirren" Daten zu reparieren um diese automatisiert zu verwenden?
Beispiel:
"Hamburger Druck GmbH & Co.KG / Warenannahme DS über BZ-Auffahrt (Beschilderung beachten)"
Gruß Ralf
Letzte Änderung: 1 Jahr 7 Monate her von Ralf Birk.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- FlowHeater-Team
- Offline
- Administrator
1 Jahr 7 Monate her #4821
von FlowHeater-Team
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
FlowHeater-Team antwortete auf Überlanges Textfeld sinnvoll teilen
Hallo Ralf,
das kannst du mit dem String Replace Heater und der Option „Ersetzen so lange wiederholen bis nicht mehr gefunden“ durchführen.
Bei Suchen trägst du zwei Leerzeichen ein und bei ersetzen ein Leerzeichen. Am Ende sind in deiner Zeichenfolge keine mehrfach aufeinanderfolgende Leezeichen vorhanden.
das kannst du mit dem String Replace Heater und der Option „Ersetzen so lange wiederholen bis nicht mehr gefunden“ durchführen.
Bei Suchen trägst du zwei Leerzeichen ein und bei ersetzen ein Leerzeichen. Am Ende sind in deiner Zeichenfolge keine mehrfach aufeinanderfolgende Leezeichen vorhanden.
gruß
Robert Stark
Wurde Ihre Frage damit beantwortet? Bitte geben Sie ein kurzes Feedback, Sie helfen damit auch anderen die evtl. ein ähnliches Problem haben. Danke.
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
- Ralf Birk
- Autor
- Offline
- Benutzer
Weniger
Mehr
- Beiträge: 132
1 Jahr 7 Monate her #4822
von Ralf Birk
Ralf Birk antwortete auf Überlanges Textfeld sinnvoll teilen
Hallo Robert,
so einfach kann die Welt sein.
Ich habe habe bei meinen Versuchen mit "Ersetzem so lange...." 1 Blank durch nichts ersetzt, dann sind ja auch die gewollten weg.
Ich habe gedacht mit dieser Einstellung geht er einmal den Inhalt durch und nicht in einer Schleife. Danke...
Gruß Ralf
so einfach kann die Welt sein.
Ich habe habe bei meinen Versuchen mit "Ersetzem so lange...." 1 Blank durch nichts ersetzt, dann sind ja auch die gewollten weg.
Ich habe gedacht mit dieser Einstellung geht er einmal den Inhalt durch und nicht in einer Schleife. Danke...
Gruß Ralf
Bitte Anmelden oder Registrieren um der Konversation beizutreten.
Ladezeit der Seite: 0.285 Sekunden