ein speicherbuffer als parameter?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Knight_Rider_2000
Beiträge: 145
Registriert: 05.02.2007 20:46
Kontaktdaten:

ein speicherbuffer als parameter?

Beitrag von Knight_Rider_2000 »

hi,
ich habe folgenes Problem, ich möchte eine Prozedur programmieren die ein Speicherbereich von IncludeBinary als datei speichert. Wie muss ich den parameter schreiben? So?:

Code: Alles auswählen

?char
oder so?

Code: Alles auswählen

*char
oder so?

Code: Alles auswählen

@char
oder wie sonst?
PB 4.20,Blitz3D 1.98,Microsoft Visual Studio 2005 Professional, Microsoft Visual Studio 2008 Professional
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

ich nehme an, char ist dein Label?

Code: Alles auswählen

DataSection
char:
IncludeBinary "whatever.who"
EndDataSection
..dann liefert dir ?char die adresse des Labels.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Knight_Rider_2000
Beiträge: 145
Registriert: 05.02.2007 20:46
Kontaktdaten:

Beitrag von Knight_Rider_2000 »

so soll es sein

Code: Alles auswählen

Procedure copyfromlabel(labeladresse,path.s)
die labeladresse soll dann selbst eintippbar sein besonders wenn man mehrere labels hat
PB 4.20,Blitz3D 1.98,Microsoft Visual Studio 2005 Professional, Microsoft Visual Studio 2008 Professional
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

die labeladresse kannst du nur in den code direkt eingeben, sie ist keine variable.
die labels werden beim kompilieren umgewandelt, im fertigen programm sind sie nicht mehr vorhanden.

du kannst also z.b. so vorgehen:

Code: Alles auswählen

Procedure DoIt( *Label )
EndProcedure

DoIt(?Label1)
DoIt(?Label2)

DataSection
Label1:
IncludeBinary "File1.dat"
Label2:
IncludeBinary "File2.dat"
EndDataSection
wenn du aber zur laufzeit einen labeltext in ein gadget oder eine console eingeben willst: geht nicht.
du könntest nur zur compilezeit eine tabelle mit den labels erstellen,
die du dann zur laufzeit anwählen kannst.

Code: Alles auswählen

Dim Labels(4)
Restore Table
For n=0 To 4
  Read Labels(n)
Next

Procedure DoIt( *Label )
EndProcedure

nummer = EingabeProc() ; irgendeine möglichkeit, dass der benutzer eine zahl eingibt

DoIt( Labels(nummer) )

DataSection
  Table:
    Data.l ?Label1, ?Label2, ?Label3, ?Label4, ?Label5
  
  Label1:
    IncludeBinary "File1.dat"
  Label2:
    IncludeBinary "File2.dat"
  Label3:
    IncludeBinary "File3.dat"
  Label4:
    IncludeBinary "File4.dat"
  Label5:
    IncludeBinary "File5.dat"
EndDataSection
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten