Seite 1 von 1

Array in einer Struture sortieren

Verfasst: 12.12.2007 20:53
von HJA
Hallo,

ich habe 2 Fragen.

ist es möglich ein Array in einer Linklist mit Struktur mit SortArray zu sortieren?

Code: Alles auswählen

structure sTest

   var1.l
   var2.l
   var3.s
   feld.s[100]

endstructure

newlist Test.sTest

nun 10 Elemente in die Liste und für jedes Element 100 Werte ins Feld.
an dieser Stelle möchte ich nun die Arrays in den einzelenen Elementen sortieren.

2. Frage

Wie kann ich einen Zeiger auf eine Longvariable übergeben und in einer Prozedur deren wert ändern? Mit String hat das so funktioniert:

Code: Alles auswählen

procedure test(*str)

     *str="Meier"

endprocedure

define var.s=""

test(@var)

debug var
, auch hat es mit einer Struktur funktioniert. Müssen mehrere Long Variablen immer in einer Struktur übergeben werden?


Gruss
hja

Verfasst: 12.12.2007 21:06
von NicTheQuick
So geht das:

Code: Alles auswählen

Procedure test(*L.Long)
  *L\l = 100
EndProcedure

Define l.l

test(@l)

Debug l

Verfasst: 12.12.2007 21:12
von Thalius
Am besten machst du das so:

Code: Alles auswählen

Structure _fun
  long.l
  String.s
EndStructure

Procedure test(*str._fun)
  If *str ; ist pointer gültig ?
     *str\long  = 123
     *str\String= "Meier"
  EndIf    
EndProcedure


; Achtung ! da du nachher den Pointer übergibst und dies in Prozeduren anwendest - var als static definieren 
; da ansonsten bei procedurereturn/ende der pointer zur variable generiert, innerhalb der proc ungültig wird
; 
Define var._fun

test(@var)

Debug var\long
Debug var\String

auch hat es mit einer Struktur funktioniert. Müssen mehrere Long Variablen immer in einer Struktur übergeben werden?
Generell nein. Du kannst diese direkt übergeben:

Code: Alles auswählen

Procedure test(blah.l,foo.l)
...
oder mit PeekL() / PokeL() -> .l .Long und den pointern arbeiten.

EDIT: Verd. zu langsam :lol:

Thalius

Verfasst: 13.12.2007 18:12
von HJA
Hallo,

vielen dank für die Antworten.
So bin ich zumindest bei den Pointern schonmal ein Stück weiter.

Ist halt nicht ganz so einfach nach vielen Jahren mit einer anderen Entwicklungsumgebung auf Purebasic umzusteigen.

Falls noch jemand eine Idee hat, wie ich die Arrays (siehe oben) sortienen kann, wäre ich dankbar. Falls ich nur die Syntax grad nicht weiss, wäre es mit Bordmitteln ja einfacher, als die Sortierroutine selbst einzubauen.

gruss
hja