Seite 2 von 3

Verfasst: 12.05.2008 16:25
von ts-soft
BlueHoschi hat geschrieben: @TS
bei dem PSDK-Launcher bekomme ich nur ein leeres Bild, was muß ich jetzt tun (bitte Fremder nimmst Du mich an die Hand und bringst mich zu Mami?). Also vielleicht mal ´ne Erklärung für Dummies... :freak:
PSDK oder MSDN bei MS downloaden und installieren. Einmal über
Startmenü aufrufen.

Den Launcher als IDE-Tool oder jaPBe-Tool konfigurieren, einzige empfehlenswerte Einstellung ist ein Shortcut z.B. Alt-F1

Ansonsten gehts automatisch, notfalls nochmal eintragen mit dem parameter
-config und dann nen Namespace aussuchen.

Steht alles in dem Thread, ansonsten zeigste das Bild der Mami, die macht
es dann :mrgreen:

Verfasst: 12.05.2008 16:30
von BlueHoschi
...hmpf...

Verfasst: 12.05.2008 20:14
von Leonhard
Die Idee ist toll, hat aber einen Haken:

Wenn man jetzt die Daten dieser Struktur bearbeiten möchte, aber auch enen Zugriff auf den Pointer haben möchte (z.B. um den Pointer selbst zu beschreiben), so benötigt man 2 Pointer, was man in C mit ** machen kann, aber in PureBasic nicht möglich ist. Man müsste eine Pointer-Struktur extra für diese Struktur erstellen, was sehr nerfig ist.

Bsp:

Code: Alles auswählen

Structure MyStruct
  a.l
  b.l
  c.l
EndStructure
Structure p_MyStruct
  *p.MyStruct
EndStructure

Procedure SetVar(*m.p_MyStruct)
  If *m\p = 0 : *m\p = AllocateMemory(SizeOf(MyStruct)) : EndIf
  *m\p\a = 5
EndProcedure

; ------------ Beispiel --------------

Define *m.MyStruct
SetVar(@*m)

Verfasst: 12.05.2008 20:51
von milan1612
Wenn ich dich jetzt richtig verstanden hab (bin mir nich sicher) dann guck mal hier:

Code: Alles auswählen

Structure Struct
  X.l
  Y.l
EndStructure

Procedure ReturnProc()
  *id.Struct = AllocateMemory(SizeOf(Struct))
  *id\X = 5
  *id\Y = 10
  ProcedureReturn *id
EndProcedure

*ret.Struct = ReturnProc()
Debug *ret\X ;Auf die Elemente zugreifen
Debug *ret\Y
Debug *ret ;Und voila, hier ist der Pointer

FreeMemory(*ret)
*ret allein ist ein ganz normaler Pointer, *ret\X greift mithilfe der Structure-
Deklarierung auf den reservierten Speicher zu und gibt mir den dort gespeicherten Wert.

Verfasst: 12.05.2008 21:00
von ts-soft
@milan1612
Deins sind keine Pointer auf Pointer
siehe **

Gruß
Thomas

// edit beispiel:

Code: Alles auswählen

text.s = "Hallo"
*pText = @text
*ppText = @*pText

Debug PeekS(PeekL(*ppText))

Verfasst: 12.05.2008 22:02
von milan1612
Ja schon klar, aber das braucht er ja auch nicht. Soweit ich jetzt verstanden hab
will er den "strukturierten" Pointer auch als normalen Pointer ansprechen und
ändern können. Und das zeigt ja mein obiges Beispiel. Hab ich das jetzt richtig verstanden?

Verfasst: 12.05.2008 22:07
von ts-soft
> Hab ich das jetzt richtig verstanden?
Keine Ahnung, wird wohl so sein :wink:

Verfasst: 23.07.2008 10:40
von Brügge
hi coole sache mit der structure!!

aber wie kann ich einen array zurück geben?

kann man das auch mit pointer machen, oder gibt es da einen anderen trick?

vielen dank!

mfg!

Verfasst: 23.07.2008 11:30
von Little John
PB-Hilfe zu Prozeduren hat geschrieben:Um ein Array oder eine Linked List zurückzuliefern, kann ProcedureReturn nicht verwendet werden. Übergeben Sie zu diesem Zweck das Array oder die Linked List als Parameter an die Prozedur.
Gruß, Little John

Verfasst: 23.07.2008 12:06
von Brügge
habe gerade zumgetestet...

also gehen tut es ^^ aber nicht 100%ig

Code: Alles auswählen


procedure getarray()
  dim array.s(5)

  for i = 0 to 5
    array(i) = "test"+str(i)
    
  next i

  procedurereturn @array()

enprocedure


dim array2.s(5)

array2() = getarray()

for i = 0 to 5
  debug array2(i)
next i

bei mir kommt an arraystelle 1 immer ein falscher wert... der rest geht!