PDA

View Full Version : Problem Overlay bei Datenstruktur



Stefan_Sk
11-04-06, 16:33
Hallo Forum

ich habe ein DS array


d txt_array ds dim(99)
d likeds(txt_array_ds)
d
d txt_array_ds ds qualified
d txtnr 3s 0 inz(0)
d txt 40a


funktioniert auch soweit ganz gut nur das ewige zuweisein ist eben
mühselig.
deswegen suche ich eine möglichkeit andere variablen über
das array zu legen. habe schon alles mögliche getestet
mit overlay, zwischenfeld.... leider alles ohne erfolg.


d aaa ds dim(99)
d likeds(txt_array_ds)
d gs_lfdnr1 3s 0 overlay(aaa:1)
D gs_txt1 35a overlay(aaa:4)

war einer meiner versuche geht aber nicht

bitte um einen tipp was ich machen kann

mfg stefan

Fuerchau
11-04-06, 18:07
Ich weiß nicht was du da erreichen willst.
Definiere doch einfach neben "qualified" auch "dim".
Du kannst dann "txt" per overlay unterdefinieren.

B.Hauser
11-04-06, 18:48
Hallo,

hast Du's schon mal so versucht?



D DS
D Text_Array Dim(99)
D TxtNr 3S 0 Overlay(Text_Array) inz(*Zeros)
D Txt 40A Overlay(Text_Array: *Next)
*--------------------------------------------------------
/Free
TxtNr(1) = 1;
Txt(1) = 'ABC';
Dsply Text_Array(1);
/End-Free


Birgitta

Stefan_Sk
12-04-06, 08:11
nicht ganz das was ich brauche.
habe mich warscheinlich nicht richtig ausgedrückt.


d txt_array ds dim(99)
d likeds(txt_array_ds)
d
d txt_array_ds ds qualified
d txtnr 3s 0 inz(0)
d txt 40a
/free
// also ich habe mir eine procedur gemacht die mir mehrere
// texte aus einer datei in einem array liefert
txt_array = txt_laden('verwendung':'vonzeile':'anzzeilen');

// das was irgedwie unterbinden ist ist dann das zuweisen
txtnr1 = txt_array(1).txtnr1;
txt1 = txt_array(1).txt1;
txtnr2 = txt_array(2).txtnr1;
txt2 = txt_array(2).txt1;
txtnr3 = txt_array(3).txtnr1;
txt3 = txt_array(3).txt1;
// usw jenachdem wieviele texte ich zurückgebe.
// werden die felder jetzt verändert muss ich sie auch
// wieder speichern. alles in umgekehrter reihenfolge
txt_array(1).txtnr1 = txtnr1;
txt_array(1).txt1 = txt1;
// .........

// die felder direkt zuwiesen geht nicht da in der datei
// belibig ´viele texte sein können
// sieht etwa so aus (verwendung,txtnr,txt)
/end-free


ich hoffe diesesmal habe ich mich richtig ausgedrückt und es giebt
eine lösung für das problem

mfg stefan

Fuerchau
12-04-06, 09:31
DAS verstehe ich nun gar nicht da du doch Zugriff per Index hast.

Stefan_Sk
12-04-06, 09:54
ich habe in einem dspf mehrere textzeilen die von dieser datei befüllt
werden. mit der bild auf-ab taste kann der user blättern.
einen subfile konnte ich nicht verwenden da ich 2 voneinander
unabhängige bereiche nebeneinander habe (je 35zeichen lang)
die gleichzeitig aktiv sein müssen.
da sich der index immer ändert wenn der user blättert muss ich
immer neu zuweisen.
wäre einfach praktisch wenn das automatisch geht.

Fuerchau
12-04-06, 10:27
Dann führt kein Weg an deiner Methode vorbei, da du ja n Felder im DSPF hast die auch je nach Seite unterschiedlich befüllt werden.

Mit einer Window-Subfile und Overlay müssten auch 2 Subfiles nebeneinander aktivierbar sein.

jo400
12-04-06, 14:18
Hallo Stefan,

wenn du die Felder deiner DSPF in ein Array mappen willst, versuch doch mal folgendes:

D DS
D DSPFTEXT 240
D DSPFTEXT01 OVERLAY(DSPFTEXT:1)
D DSPFTEXT02 OVERLAY(DSPFTEXT:41)
D DSPFTEXT03 OVERLAY(DSPFTEXT:81)
D DSPFTEXT04 OVERLAY(DSPFTEXT:121)
D DSPFTEXT05 OVERLAY(DSPFTEXT:161)
D DSPFTEXT06 OVERLAY(DSPFTEXT:201)
D DSPFTEXTFG 40 OVERLAY(DSPFTEXT) DIM(6)


DSPFTEXT01-DSPFTEXT06 sind die Feldnamen in der DSPF; DSPFTEXTFG ist dann die Feldgruppe/Array, mit der du im Programm arbeiten kannst.

Jetzt kannst du auf jeden Fall die Zuweisungen in einer Schleife mit zwei verschiedenen Indexen vornehmen. Habe ich schon des öfteren verwendet, um z.B. 12 Monatswerte innerhalb einer Schleife in eine DSPF zu füllen.

Viel Erfolg

Jo