Deutsch
Forum

Mein Hund hat eine Tasche (Arrays in Klassen)

 
- Seite 1 -



Dean
Wood
Hallo,
ich suche nach einer Möglichkeit Arrays an eine Instanz zu binden, ausgehend vom Beispiel in der Doku:
Class Hund = Geburtsdatum$(10), \
Rasse$(32),        \
Groesse%,          \
bellen@, \
tasche$[8,1]

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 X2
Intel 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 9
Phantasie ist nicht Ausflucht. Sich etwas vorstellen heißt, eine Welt bauen, eine Welt erschaffen. Eugène Ionesco
23.01.2013  
 



War keine Absicht.
 
23.01.2013  
 




Dean
Wood
Ach war doch nur Spaß, muss doch auch sein ;)
 
XProfan 9
Phantasie 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-

 
23.01.2013  
 




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 9
Phantasie 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":
CLS
 $I tasche.inc
declare TobysTasche#
TobysTasche# = @New(Tasche,1,1)
TobysTasche#.hinzu("1","Knochen")
Print TobysTasche#.inhalt()

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 X2
Intel 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 X2
Intel 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 9
Phantasie 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]
 
24.01.2013  
 




Dean
Wood
[OFFTOPIC]Danke, hatte ich übersehen [/OFFTOPIC]
 
XProfan 9
Phantasie ist nicht Ausflucht. Sich etwas vorstellen heißt, eine Welt bauen, eine Welt erschaffen. Eugène Ionesco
24.01.2013  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

20.830 Betrachtungen

Unbenanntvor 0 min.
Langer02.01.2021
RudiB.16.04.2020
Jörg Sellmeyer19.05.2018
lange-jens03.12.2013
Mehr...

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

Dean Wood (13x)
iF (9x)
RGH (2x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie