| |
|
|
- Seite 1 - |
|
Dean Wood | Hallo, ich suche nach einer Möglichkeit Arrays an eine Instanz zu binden, ausgehend vom Beispiel in der Doku:
Leider scheint dass nicht zu funktionieren, vielleicht habt ihr eine Lösung auf die ich gerade nicht komme.
DeanWood. |
|
|
| Phantasie ist nicht Ausflucht. Sich etwas vorstellen heißt, eine Welt bauen, eine Welt erschaffen. Eugène Ionesco | 23.01.2013 ▲ |
|
|
|
| |
|
- Seite 2 - |
|
|
« Dieser Beitrag wurde als Lösung gekennzeichnet. » |
|
- Seite 2 - |
|
RGH | Oh, da waren sogar noch einige Fehler drin, die mir eben aber auch nicht auffielen:
1. Die Konstruktor-Methode muß auch in der Methodenliste der Klassendefinition stehen. Wenn nicht, wird sie nie aufgerufen. .id& hat dann also 0 und es wird dann ab XProfan X2 die ListboxListe genutzt. Bei XProfan 11 war das noch nicht der Fall und somit resultiert Deine Fehlermeldung. Da .sache& dann auch 0 ist ...
2. Die Methode Inhalt hat einenm Parameter. Dieser sollte im Hauptprogramm auch angegeben werde, Du willst den ersten Eintrag sehen? Dieser hat den Index 0. So funktioniert es auch mit XProfan 11:
Class Tasche = sache&,\
id&, \
tasche@,\
hinzu@,\
inhalt@
proc Tasche.Tasche
.sache& = Create("List",1)
.id& = Create("List",1)
endproc
proc Tasche.hinzu
parameters idnr$,bzsache$
@AddString(.id&,idnr$)
@AddString(.sache&,bzsache$)
endproc
proc Tasche.inhalt
parameters idnr%
declare zeile$,zeile2$
zeile$ = @GetString$(.sache&,idnr%)
zeile2$ = @GetString$(.id&,idnr%)
zeile$=zeile$+":"+zeile2$
return zeile$
endproc
CLS
declare TobysTasche#
TobysTasche# = @New(Tasche,1,1)
TobysTasche#.hinzu("1","Knochen")
Print TobysTasche#.inhalt(0)
waitinput
Gruß Roland |
|
|
| XProfan X2Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 24.01.2013 ▲ |
|
|
|
|
|
Dean Wood | So Neulinge auf den Arm ist spaßig was? *lach*
KekseFuer_iF%=KekseFuer_iF%-1 *kicher*
DeanWood. |
|
|
| XProfan 9Phantasie ist nicht Ausflucht. Sich etwas vorstellen heißt, eine Welt bauen, eine Welt erschaffen. Eugène Ionesco | 23.01.2013 ▲ |
|
|
|
|
| War keine Absicht. |
|
|
| |
|
|
|
Dean Wood | Ach war doch nur Spaß, muss doch auch sein ;) |
|
|
| XProfan 9Phantasie ist nicht Ausflucht. Sich etwas vorstellen heißt, eine Welt bauen, eine Welt erschaffen. Eugène Ionesco | 23.01.2013 ▲ |
|
|
|
|
| Habs ja auch als Spaß verstanden. ^^
Übrigens, mit XProfan statt:
KekseFuer_iF%=KekseFuer_iF%-1
einfach
add KekseFuer_iF%,-1
oder
sub KekseFuer_iF%,1
schreiben,
mit XPSE geht auch:
KekseFuer_iF--
sowie
KekseFuer_iF-
|
|
|
| |
|
|
|
Dean Wood | Ah, Danke dass vereinfacht meine Keksbuchhaltung natürlich: Inc KekseFuer_iF% sollte auch gehen oder auch Dec KekseFuer_iF% jenachdem was man gerade so braucht *lach*
DeanWood. |
|
|
| XProfan 9Phantasie ist nicht Ausflucht. Sich etwas vorstellen heißt, eine Welt bauen, eine Welt erschaffen. Eugène Ionesco | 23.01.2013 ▲ |
|
|
|
|
Dean Wood | Na da kann ich ja viel probieren ...
Ab XProfan10 gibt es es Stringlisten und Stringgrids (Stringtabellen), die den dynamischen Umgang mit großen Stringmengen deutlich vereinfachen. nachdem ich dass gegen 4 Uhr rausfand, habe ich es natürlich mit der Interpreter Version 11.2 versucht (XProfanFree) wo sich herausstellte dass es in Klassen wohl nicht richtig funktioniert, jedenfalls kommt bei @AddString(.id&,idnr$) dass diese Funktion nicht auf das Fensterobjekt anwendbar wäre. Die Liste habe ich natürlich zuvor mit .id& = Create("List",1) im Konstruktor erzeugt ...
Hier die Klasse "tasche.inc"
Class Tasche = sache&,\
id&, \
hinzu@,\
inhalt@
proc Tasche.Tasche
.sache& = Create("List",1)
.id& = Create("List",1)
endproc
proc Tasche.hinzu
parameters idnr$,bzsache$
@AddString(.id&,idnr$)
@AddString(.sache&,bzsache$)
endproc
proc Tasche.inhalt
parameters idnr%
declare zeile$,zeile2$
zeile$ = @GetString$(.sache&,idnr%)
zeile2$ = @GetString$(.id&,idnr%)
zeile$=zeile$+":"+zeile2$
return zeile$
endproc
und hier die dazugehörige Main "tascheMain.xprf":
Nachtrag - eben in der Doku gefunden:
Technisch gesehen sind Stringlisten unsichtbare Listbox-Controls, ...
Wahrscheinlich wird versucht eine ListBox zu erzeugen, die nur versteckt wird was wiederum hier innerhalb von Klassen Profans nicht funktionieren dürfte da die ListBox dann kein Handle vom benötigten Hauptfenster hat welches zur Erstellung aber notwendig ist. Vor diesem Hintergrund ist die oben genannte Fehlermeldung dann auch wieder logisch, untermauert wird meine Vermutung dadurch dass wenn ich StringListen im MainFile erzeuge, diese dann ohne Fehler funktionieren.
Fazit: Wenn ich richtig liege, werde ich wohl doch zu meinen ID Variablen und Arrays zurück müssen um das umzusetzen ... |
|
|
| Phantasie ist nicht Ausflucht. Sich etwas vorstellen heißt, eine Welt bauen, eine Welt erschaffen. Eugène Ionesco | 24.01.2013 ▲ |
|
|
|
|
RGH | Also unter XProfan X2 funktioniert Dein Beispiel völlig korrekt:
Class Tasche = sache&,\
id&, \
hinzu@,\
inhalt@
proc Tasche.Tasche
.sache& = Create("List",1)
.id& = Create("List",1)
endproc
proc Tasche.hinzu
parameters idnr$,bzsache$
@AddString(.id&,idnr$)
@AddString(.sache&,bzsache$)
endproc
proc Tasche.inhalt
parameters idnr%
declare zeile$,zeile2$
zeile$ = @GetString$(.sache&,idnr%)
zeile2$ = @GetString$(.id&,idnr%)
zeile$=zeile$+":"+zeile2$
return zeile$
endproc
CLS
declare TobysTasche#
TobysTasche# = @New(Tasche,1,1)
TobysTasche#.hinzu("1","Knochen")
Print TobysTasche#.inhalt()
waitinput
Als Ergebnis wird "1:1" angezeigt.Eine Stringliste ist keinem Fenster zugeordnet. Ich will jetzt aber nicht ausschließen, dass in XProfan 11 hier noch ein Bug versteckt war.
Gruß Roland |
|
|
| XProfan X2Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 24.01.2013 ▲ |
|
|
|
|
Dean Wood | Hallo Roland, danke für deine Antwort, da muss ich wohl auch noch einen Fehler drin haben aber es war ja auch schon spät ;) Normalerweise hätte rauskommen sollen "1:Knochen". Bis ich mir die aktuelle Version hole, werde ich noch ein paar andere Sachen ausprobieren die ich unbedingt vorher abklären muss. Da es eine reine Textapplikation werden soll, soll es auch für Blinde lesbar sein da will ich mich noch genauer informieren ob diese Screenreader die es da so gibt die Textausgabe über STDIN / STDOUT abfangen oder ob die sowas wie OCR nutzen. DrawText wäre ja zum Beispiel ein Fall für OCR (oder ähnlich) wenn ich mich nicht irre, wenn Print auch nur über Canvas gezeichnet wird auch denke ich mal.
Gruß DeanWood. |
|
|
| Phantasie ist nicht Ausflucht. Sich etwas vorstellen heißt, eine Welt bauen, eine Welt erschaffen. Eugène Ionesco | 24.01.2013 ▲ |
|
|
|
|
RGH | Oh, da waren sogar noch einige Fehler drin, die mir eben aber auch nicht auffielen:
1. Die Konstruktor-Methode muß auch in der Methodenliste der Klassendefinition stehen. Wenn nicht, wird sie nie aufgerufen. .id& hat dann also 0 und es wird dann ab XProfan X2 die ListboxListe genutzt. Bei XProfan 11 war das noch nicht der Fall und somit resultiert Deine Fehlermeldung. Da .sache& dann auch 0 ist ...
2. Die Methode Inhalt hat einenm Parameter. Dieser sollte im Hauptprogramm auch angegeben werde, Du willst den ersten Eintrag sehen? Dieser hat den Index 0. So funktioniert es auch mit XProfan 11:
Class Tasche = sache&,\
id&, \
tasche@,\
hinzu@,\
inhalt@
proc Tasche.Tasche
.sache& = Create("List",1)
.id& = Create("List",1)
endproc
proc Tasche.hinzu
parameters idnr$,bzsache$
@AddString(.id&,idnr$)
@AddString(.sache&,bzsache$)
endproc
proc Tasche.inhalt
parameters idnr%
declare zeile$,zeile2$
zeile$ = @GetString$(.sache&,idnr%)
zeile2$ = @GetString$(.id&,idnr%)
zeile$=zeile$+":"+zeile2$
return zeile$
endproc
CLS
declare TobysTasche#
TobysTasche# = @New(Tasche,1,1)
TobysTasche#.hinzu("1","Knochen")
Print TobysTasche#.inhalt(0)
waitinput
Gruß Roland |
|
|
| XProfan X2Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 24.01.2013 ▲ |
|
|
|
|
Dean Wood | Danke, danke Habs eben probiert und es funktioniert, na war meine erste Klasse dafür gings ja gerade nochmal so durch (ja ich weiß eigentlich nicht aber irgendwie muss man sich ja Mut machen)
Gruß, DeanWood. |
|
|
| XProfan 9Phantasie ist nicht Ausflucht. Sich etwas vorstellen heißt, eine Welt bauen, eine Welt erschaffen. Eugène Ionesco | 24.01.2013 ▲ |
|
|
|
|
| [OFFTOPIC]Tip: Wenn Themen erledigt sind einfach unten links auf erledigt klicken.[/OFFTOPIC] |
|
|
| |
|
|
|
Dean Wood | [OFFTOPIC]Danke, hatte ich übersehen [/OFFTOPIC] |
|
|
| XProfan 9Phantasie ist nicht Ausflucht. Sich etwas vorstellen heißt, eine Welt bauen, eine Welt erschaffen. Eugène Ionesco | 24.01.2013 ▲ |
|
|
|