Thread Parameter umwandeln (55 answers)
Opened by Benji2010 at 2010-12-13 12:04

benji2010
 2011-01-03 15:44
#143991 #143991
User since
2010-12-20
13 Artikel
BenutzerIn
[default_avatar]
Erstmal ein gesundes neues Jahr allen hier im Forum...

Ich Danke euch für die bis dato tatkräftige Hilfe..

Ein Punkt ist leider noch offen.Hier mal der derzeitige Code:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/perl -p

use strict;
use warnings;
use vars qw(%var);

while ( /([A-Z][0-9]*)=(\S+)/g ) {
if ( substr($_,0,1) eq '(' ) {
next;

my( $id, $val, $pos ) = ( $1, $2, pos );
my $len = length $val;

(my $tmp_val = $val) =~ s/([A-Z][0-9]*)/$var{$1}||''/ge;

if ( $tmp_val =~ /^[\d\*\/\+\-\(\).]+$/ ) {
$tmp_val = eval $tmp_val;
$var{$id} = $val = $tmp_val unless $@;
}

substr $_, $pos - $len, $len, $val;
pos = $pos - $len + length $val;
}


Während dem Einlesen kommen in manchen Zeilen solche Strings vor:

Quote
T600250
T801260
N230 T306520


Ich möchte gerne bei jedem Vorkommen die fünfte und sechste Stelle des T-Strings, in dem Parameter R10 speichern.

Für die erste Zeile hieße dies:

Quote
R10=25


zweite:

Quote
R10=26


und die dritte:
Quote
R10=52


der R10-Parameter soll immer überschrieben werden...

Falls ein R10 dann in der Berechnung vorkommt, soll der aktuelle Wert eingesetzt werden. Als Beispiel:

Code: (dl )
1
2
3
4
5
N3200 M66 ; T600280  
N3220 ROTH(45);
N3290 Y=(700/2)+10+R10
N3340 YFREI
N3350 ZNOUD


In Zeile N3200 wir R10=28 und in Zeile N3290 soll bei R10 auch 28 verrechnet werden...

Hoffe ich konnte es verständlich erklären, bei Rückfragen bitte Bescheid geben...
Wie kann man das am Besten in dem bestehenden Programm umsetzen...
Tut mir leid für die Kopfnuss gleich am Jahresanfang.. :-)



View full thread Parameter umwandeln