Support Forum

Import von Daten aus Dateien (OPEN, INPUT)

Tags:
  • 2015

Ich versuche daten einzulesen. Hier Code-Auszug:

file_suffix = '.txt' !`.dat`

profile_file = `Spundwand` + file_suffix

findex = 3
file_is_exist = FILE_EXIST ( profile_file )
IF file_is_exist = 1 THEN
kanal_id = OPEN ( "TEXT" , profile_file , "SEPERATOR=',',MODE=RO,fullpath" )
IF kanal_id > 0 THEN
REPEAT
! INPUT_1
input_wert = INPUT ( kanal_id , findex , 1 , name )
IF name = typ THEN
! INPUT_2
input_wert = INPUT ( kanal_id , findex , 1 ,
name , draw_typ ,
e_sp_axl ,
a_y , a_y_e ,
x [ 1 ],
y [ 1 ],
! ...
x [ 22 ],
y [ 22 ])
ENDIF
findex = findex + 1
UNTIL input_wert <= 0
CLOSE kanal_id
ENDIF
ENDIF

Dateiinhalt von "Spundwand.dat":

1;2;3; ...
Profil;Draw-Typ;Achse;Y-A;Y-E;x1;y1;x2;y2; ... ;x21;y21;x22;y22
L601;0;0.600000;0.0;0.0;0.169571;-0.155000;0.156982;-0.150105; ... ;0.169651;-0.147500
L602;0;0.600000;0.0;0.0

Den Parameterwert "TEXT" habe ich aus der Vorlage "Spannanker" übernommen, aber dort ist die Vorgabe der Dateiendung ".re2".

Wenn ich den Code ausführe wird in die Variable "name" die ganze Zeile importiert und in den restlichen nichts.

FRAGEN:
Welche möglichkeiten gibt es für den Parameter "filter" beim der function "OPEN"?
Welche Dateiendung muss dazu benutzt werden?
Wie kann ich die zeile in Variable einlesen ("INPUT(..)")?

Show most helpful answer Hide most helpful answer

Hallo,

deine Variable "findex" muss hochgezählt werden (für jede Zeile ).

Z.B. liest folgender Code Koordinaten-Werte der Form "1.23;2.34;3.45" aus der Datei
"f:\Points.txt" ein, und legt diese im Array ip ab:
DIM ip[3][]
x=1:y=2:z=3
fname="f:\Points.txt"
ch1=OPEN("TEXT",fname,"SEPARATOR=';',MODE=RO,fullpath,dialog")
j=0
REPEAT
j=j+1
n=INPUT(ch1,j,1,ix,iy,iz)
ip[x][j]=ix
ip[y][j]=iy
ip[z][j]=iz
UNTIL n<=0
CLOSE ch1

Gruß Jörg

Hallo,

wenn Du den Separator ";" in der Datei Spundwand.txt verwendest,
solltest Du das im OPEN-Befehl "mitteilen":
kanal_id = OPEN ( "TEXT" , profile_file , "SEPERATOR=';',MODE=RO,fullpath" )

Als eine Zeile gilt dabei dann alles bis zum RETURN/EOL.

Als Datei-Endung kann man alles benutzen, muss diese aber im Datei-Namen vollständig mit angeben. Natürlich sollte der Datei-Inhalt auch wirklich aus "Text" bestehen.

Gruß Jörg

Sorry mein Fehler.
Habe "SEPERATOR=';' im Smartpart verwendet.
Aber meine eigendliche Frage ist wieso wird nur eine zeile importiert und keine aufteilung in die einzelnen Variablen.

Hallo,

deine Variable "findex" muss hochgezählt werden (für jede Zeile ).

Z.B. liest folgender Code Koordinaten-Werte der Form "1.23;2.34;3.45" aus der Datei
"f:\Points.txt" ein, und legt diese im Array ip ab:
DIM ip[3][]
x=1:y=2:z=3
fname="f:\Points.txt"
ch1=OPEN("TEXT",fname,"SEPARATOR=';',MODE=RO,fullpath,dialog")
j=0
REPEAT
j=j+1
n=INPUT(ch1,j,1,ix,iy,iz)
ip[x][j]=ix
ip[y][j]=iy
ip[z][j]=iz
UNTIL n<=0
CLOSE ch1

Gruß Jörg