Seite 9 von 14

Verfasst: 23.02.2007 16:55
von #NULL
so in der art:

Code: Alles auswählen

...ButtonImageGadget(f+e,e, 0, x, y,....
..oder auch so:

Code: Alles auswählen

For e = 2 To 7
  For f = 2 To 7
    If  ButtonImageGadget(f+e*100,e, 0, x, y,...
  ;...

Verfasst: 23.02.2007 16:59
von Machete @PB
Danke ja so gehts :allright:
Ich dachte mit der der For Schleife würde die Nummer automatisch um 1 weiterrücken...

Verfasst: 23.02.2007 18:51
von Kaeru Gaman
deine variablen "rücken" ja auch eins weiter...

aber wenn du geschachtelte schleifen hast, läuft die innere logischerweise mehrfach komplett durch.
und für eine komplett fortlaufende nummer muss man dann ne multiplikation drin haben.

ich würde dir schon empfehlen, dich mal damit auseinanderzusetzen,
was schleifen sind, was variablen sind, und wie der kram funktioniert.

Verfasst: 18.05.2007 20:00
von STARGÅTE
So, ich habe mal versucht 3.3 etwas zu erweitern und ein paar Procedure gebaut die es in 4.0 schon gibt ^^:

Code: Alles auswählen

; Auflösung des Bildschirms/Screens ermitteln
Procedure DesktopWidth()
 ProcedureReturn GetSystemMetrics_(0)
EndProcedure
Procedure DesktopHeight()
 ProcedureReturn GetSystemMetrics_(1)
EndProcedure

; Gibt die Zeit zurück. String$ kann z.B. "HH':'mm':'ss" sein
Procedure.s Time(String$) 
 time$=Space(1000)
 GetTimeFormat_(#LOCALE_USER_DEFAULT,0,0,String$,@time$,1000) 
 ProcedureReturn time$ 
EndProcedure 
; Gibt das Datum zurück. String$ kann z.B. "dd'.'MM'.'yyyy" sein
Procedure.s Date(String$) 
 Date$=Space(1000) 
 GetDateFormat_(#LOCALE_USER_DEFAULT ,0 ,0,String$,@Date$,1000) 
 ProcedureReturn Date$ 
EndProcedure 

; Mist die Zeit in ms.
Global COUNTERTIME.l
Procedure StartCounter()
 COUNTERTIME = GetTickCount_()
EndProcedure
Procedure.l StopCounter()
 ProcedureReturn GetTickCount_()-COUNTERTIME
EndProcedure

; Füllt das Ende(L) oder den Anfang(R) eines Strings mit Zeichen auf
Procedure.s RSet(String$, Laenge, Zeichen$)
 RSet$ = Space(Laenge-Len(String$))
 ReplaceString(RSet$, " ", Zeichen$, 2)
 NewString$ = RSet$+Mid(String$,1,Laenge)
 ProcedureReturn NewString$
EndProcedure
Procedure.s LSet(String$, Laenge, Zeichen$)
 LSet$ = Space(Laenge-Len(String$))
 ReplaceString(LSet$, " ", Zeichen$, 2)
 NewString$ = Mid(String$,1,Laenge)+LSet$
 ProcedureReturn NewString$
EndProcedure

; Löscht alle LoeschStrings aus einem String
Procedure.s RemoveString(String$, LoeschString$, Modus)
 NewString$ = ReplaceString(String$, LoeschString$, "", Modus)
 ProcedureReturn NewString$
EndProcedure

; Gibt einen Stringabschnitt (getrennt durch 'TrennString') an der stelle 'Index' zurück 
Procedure.s StringField(String$, Index, TrennString$)
 Stelle = 1-Len(TrennString$)
 For n = 1 To Index
  x = Stelle+Len(TrennString$)
  Stelle = FindString(String$+TrennString$, TrennString$, x)
  If Stelle = 0 : n = Index : EndIf
 Next n
 If Stelle
  NewString$ = Mid(String$, x, Stelle-x)
 EndIf
 ProcedureReturn NewString$
EndProcedure

; Zählt die Anzahl der 'StringToCount' in einem String
Procedure CountString(String$, StringToCount$)
 x = FindString(String$, StringToCount$, 1)
 While x
  n + 1
  x = FindString(String$, StringToCount$, x+1)
 Wend
 ProcedureReturn n
EndProcedure

Verfasst: 22.05.2007 12:55
von w.pieperhoff
Herzlichen Glückwunsch Stagate!
Deine Codesammlung ist wirklich Supergeil.
Erstklassig Spitze für die 3.3 Version Besitzer.

MfG
W.Pieperhoff

Verfasst: 31.05.2007 03:04
von STARGÅTE
:o SizeOf in 3.3 :o

Es gibt immer wieder Wunder in 3.3 :

Ich hatte mal wieder das Prob das ich eine LL mit einer großen Structure in einer Datei Speichern wollte:

Code: Alles auswählen

Structure M
 ID.l
 M.f
 G.l
 TT.l
 x.f
 y.f
 w.f
 v.f
 ZK.f
 HK.f
 t.f
EndStructure
Variante bis vor Kurzem:

Code: Alles auswählen

 ResetList(M())
 While NextElement(M()) 
  WriteLong(M()\ID)
  WriteLong(M()\M)
  WriteLong(M()\TT)
  WriteLong(M()\x)
  WriteLong(M()\y)
  WriteLong(M()\w)
  WriteLong(M()\v)
  WriteLong(M()\ZK)
  WriteLong(M()\HK)
  WriteLong(M()\t)
 Wend
Dann habe ich einfach mal zum Test SizeOf() geschrieben und auf einmal gibt es den Befehl in 3.3 schon. :o :?

Laut 3.3 Hilfe :
Die Seite kann nicht angezeigt werden.
Und schon wieder konnte ich in 3.3 etwas neues entdecken:

Code: Alles auswählen

 ResetList(M())
 While NextElement(M()) 
  WriteData(*M(), SizeOf(M))
 Wend
Mal sehen was ich noch für Überraschungen finde ^^

Verfasst: 31.05.2007 03:15
von ts-soft
26 Februar 2001 : Version 2.10 hat geschrieben:- Hinzugefügt new commands: ListViewGadget(), AddListViewItem(), GetGadgetText(), SetGadgetText(), PeekS(), SizeOf()
Es lohnt sich also in der Geschichte zu wühlen :mrgreen:
Früher war die Hilfe noch nicht so vollständig wie jetzt

Verfasst: 31.05.2007 03:28
von STARGÅTE
wo wir gerade dabei sind, was mache ich bei so einer structure :

Code: Alles auswählen

Structure O
 x.l
 y.l
 Text.s
 e.f
EndStructure
da ändert sich ja die länge des Text.s

und wenn ich speicher und später wieder lade kommt was falsches

Verfasst: 31.05.2007 03:57
von ts-soft
STARGÅTE hat geschrieben:wo wir gerade dabei sind, was mache ich bei so einer structure :

Code: Alles auswählen

Structure O
 x.l
 y.l
 Text.s
 e.f
EndStructure
da ändert sich ja die länge des Text.s

und wenn ich speicher und später wieder lade kommt was falsches
In PB3.3 kannste höchstens ein BytaArray anlegen und den Text reinpoken und
rauspeeken. In PB4 gibts dafür Fixstrings.

Verfasst: 31.05.2007 04:14
von STARGÅTE
nee habe ein Beitrag von NicTheQuick gefunden den ich zwar umschreiben musste aber der funzt :-)

An der Stelle : Danke NicTheQuick

Aber eigendlich auch schade ^^ denn jetzt brauche ich kein SizeOf mehr :lol: