Kann Phrases Arrays?

Anwenderaustausch zur PhraseExpress Makroprogrammierung
Post Reply
Praia
Posts: 82
Joined: 01 Apr 14, 01:06

Kann Phrases Arrays?

Post by Praia » 27 Aug 20, 02:32

Moin zusammen,

hab grad eine Aufgabe an der ich meine Zähne ausbeiße.
Aus dem CRM werden datensätze kopiert, sehen immer so aus, TAB delimited, erste Zeile sind die Titel
U_ID Group Customer mail CCode Summary
A45 3 paul as@ww +49 Total 32
B13 5 Mirko dfz@dfz +32 Total 2
Mal ist es eine Zeile, mal sinds 5, oder 10 ...
Spalte 2 (Group) soll weg.
Ist es irgendwie Möglich jeden anderen Wert in eine eigene Variable zu bekommen?

Bin total überfordert :(

Gruß

Peter Stotz
PhraseExpress Expert
Posts: 914
Joined: 27 Feb 08, 15:07

Post by Peter Stotz » 28 Aug 20, 17:02

@Praia
Kann Phrases Arrays?
Nicht originär - aber man könnte die Listenposition eines Listeninhalts als "Array-Variablenname"
wie z.B. 1;3 für den Inhalt von Zeile 1 Spalte 3 der Liste interpretieren.
Ist es irgendwie Möglich jeden anderen Wert in eine eigene Variable zu bekommen?
Ich denke schon, aber dein Listenbeispiel ist mir noch nicht verständlich - könntest du bitte ein Beispiel für
'Liste vorher'
und ein Beispiel für
'Liste nachher'
posten?
Wie sollen die Listeninhalte denn weiterverwendet werden - tatsächlich als einzelne Variable?
Peter
Windows 10 - PhraseExpress v15.0.63-Beta

Praia
Posts: 82
Joined: 01 Apr 14, 01:06

Post by Praia » 29 Aug 20, 20:09

Hi,

also original sieht soaus:

Code: Select all

U_ID	   Group	Customer     mail	Tel	     Summary
A45		3	 Paul	    as@ww	+49 123	     32
B13		5	 Mirko	    dfz@dfz	+32 456	      2
Soll dies werden (wird auch so wieder eingefügt)

Code: Select all

U_ID	Customer	mail	CCode   TNum
A45	Paul		as@ww	+49	123
B13	Mirko		dfz@dfz	+32     456
Dazu brauch ich den Namen (Customer) und Tel in einer variable weil diese weiter im text verwendet werden sollen, ist noch nict klar ob oder wie. Die Damen ind noch am beraten.
Die Tel. Nummer im Original ist allerdings komplett (+49 123) und muss beim erstem leerzeichen geteilt werden in prefix (+49) und Die Nummer (123)

Aber wenn wir das so hinbekommen ist schon viel erreicht. Das Problem ist halt auch, manchmal sind 4 Zeilen im Zwischenspeicher, mal 8.

Das "Listenposition " ist mir ganz neu, hört sich aber recht gut an. Werde mal nachlesen.

Gruß

Peter Stotz
PhraseExpress Expert
Posts: 914
Joined: 27 Feb 08, 15:07

Post by Peter Stotz » 30 Aug 20, 23:41

@Praia
Da kann man im Prinzip mit Separierung der Zeilen und innerhalb der Zeilen dann mit der Selektion der einzelnen Zeilenelemente = Spalten ganz ähnlich vorgehen, wie bei dem Beispiel, das wir kürzlich diskutiert haben
(http://www.bartelsmedia.com/forum/viewt ... dfbacf1c92)

Beispiel einer Ausgangstabelle
Zeile _ Spaltenzuordnung
______1______2_______3________4 ________5 ________6
__0 ___U_ID___Group _ Customer _ mail _____ Tel ______ Summary
__1 ___A45_____3_____ Paul______as@ww___+49 123 __ 32
__2 ___B13_____5_____ Mirko_____dfz@dfz___+32 456 __ 2

Schematisch sollte der Programmablauf dann so funktionieren:

Die Tabelle mit z Zeilen und 6 Spalten übernehmen
RegEx um die Tabellenspalten 2 und 6 zu entfernen → ergibt Tabelle mit 4 Spalten siehe unten*
Variablenreset aller Variablen mit Namen 0;1 bis zᵐᵃˣ;4 zu Leervektoren ""
##linecounter = -1
{#loop
##linecounter=##linecounter+1
select_line from Pos1 bis {#asc 13}
##columncounter=0
__ {#loop
__ ##columncounter=##columncounter+1
__ select_column von Pos1 bis {#asc 9} = Variable mit Name ##linecounter;##columncounter
__ Zeileninhalte spaltenweise kürzen von Pos1 bis {#asc 9}
__ -count <(1+Anzahl_Tabulatoren) = 4 >}
(Tabellenzeile bis Zeilenwechsel CRLF spaltenweise abgearbeitet → Zeilenwechsel CRLF entfernen und nächste Zeile)
-count <Anzahl_Tabellenzeilen = (1+Anzahl Zeilenwechsel CRLF)>}

Das Programm ergibt für das Beispiel einzelne Variablen von 0;1 bis 2;4 zur beliebigen Verwendung
Variablen mit den Namen 0;1 bis 0;4 bilden die Titelzeile (Zeile 0): 'U_ID__Customer__mail__Tel'
Variable mit Name 1;2 entspricht z.B. 'Paul'
Variable mit Name 2;3 entspricht z.B. 'dfz@dfz'

Peter
Windows 10 - PhraseExpress v15.0.63-Beta
––––––––––––––––––––
* RegEx S/R-Beispiel:
Aus einer Tabelle/Liste mit 6 tabulatorgetrennten Spalten bestimmte Spalten mit REPLACE entnehmmen:
SEARCH : ^(.*)\t(.*)\t(.*)\t(.*)\t(.*)\t(.*)$
REPLACE: \1\t\3\t\4\t\5\t_______________selektiert die Spalten 1, 3, 4, und 5 = entfernt Spalte 2 und 6
Tabelle vorher mit 6 Spalten
Zeile _ Spaltenzuordnung
______1______2_______3________4 ________5 ________6
__0 ___U_ID___Group _ Customer _ mail _____ Tel ______ Summary
__1 ___A45_____3_____ Paul______as@ww___+49 123 __ 32
__2 ___B13_____5_____ Mirko_____dfz@dfz___+32 456 __ 2
Tabelle nachher mit 4 Spalten
Zeile _ Spaltenzuordnung
______1______2_________3________4
__0 ___U_ID__ Customer _ mail _____ Tel
__1 ___A45___ Paul______as@ww___+49 123 __
__2 ___B13___ Mirko_____dfz@dfz___+32 456

Post Reply