Ende eines Datablockes ermittlen

Für allgemeine Fragen zur Programmierung mit PureBasic.
Gonzo
Beiträge: 24
Registriert: 24.04.2006 14:24

Ende eines Datablockes ermittlen

Beitrag von Gonzo »

Hallo zusammen,
mit DATASECTION und ENDDATASECTION kann man einen Datenblock erstellen, dem man mittles RESTORE aufrufen kann und den inhalt bzw. die daten mittels READ einlesen kann. Wie kann ich das Einlesen stoppen, wenn der Datenblock vollständig eingelesen wurde und keine daten mehr vorhanden sind?
Gruss, gonzo
NoUser

Re: Ende eines Datablockes ermittlen

Beitrag von NoUser »

.
Zuletzt geändert von NoUser am 01.09.2012 07:39, insgesamt 1-mal geändert.
Benutzeravatar
shadow
Beiträge: 189
Registriert: 23.03.2005 17:52
Wohnort: Lübeck

Re: Ende eines Datablockes ermittlen

Beitrag von shadow »

Das wäre ein Feature Request wert, hab nämlich auch sowas paar mal gebrauchen können /:->
ThinkPad T61 (in Gedenken) | PureBasic 4.61 B1 (32) | Windows 7 (32SP1) | ArchLinux (32) | Syllable (32)
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Ende eines Datablockes ermittlen

Beitrag von Kiffi »

shadow hat geschrieben:Das wäre ein Feature Request wert, hab nämlich auch sowas paar mal gebrauchen können /:->
Feature Request? Für was? Noch einfacher als die von
marroh vorgeschlagene Lösung wird's wohl kaum gehen.

Grüße ... Kiffi

// Edit: Hier noch mal eine leicht abgewandelte Variante

Code: Alles auswählen

EnableExplicit

Procedure Main()
  Protected.s sString
  Restore label1
  Repeat
    Read.s sString
    If sString = ""
      Break
    EndIf
    Debug sString  
  ForEver
EndProcedure

Main()

End

DataSection
  label1:
  Data.s "String 1", "String 2", "String 3", ""
EndDataSection
a²+b²=mc²
Benutzeravatar
shadow
Beiträge: 189
Registriert: 23.03.2005 17:52
Wohnort: Lübeck

Re: Ende eines Datablockes ermittlen

Beitrag von shadow »

Feature Request? Für was? Noch einfacher als die von
marroh vorgeschlagene Lösung wird's wohl kaum gehen.
Für eine elegantere Syntax. Z. B. sowas hier:
(wobei hier DataSection für die Datenzeile steht, also bis entweder ein neues Label kommt oder EndDataSection erreicht ist)

Code: Alles auswählen

EnableExplicit

Procedure Main()
  Protected.s sString
  Restore label1
  Repeat
    Read.s sString
    Debug sString 
  until DataSectionEnd(label1) 
EndProcedure

Main()

End

DataSection
  label1:
  Data.s "String 1", "String 2", "String 3", ""
EndDataSection
ThinkPad T61 (in Gedenken) | PureBasic 4.61 B1 (32) | Windows 7 (32SP1) | ArchLinux (32) | Syllable (32)
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Ende eines Datablockes ermittlen

Beitrag von Bisonte »

Für eine elegantere Syntax. Z. B. sowas hier:
Butter bei die Fische...

Wenn man eine DataSection in seinem Programm hat, dann weiss man auch, was da drin steht.
Wie will man sie sonst auch einlesen ?

Ist ja nicht so das eine DataSection dynamisch wäre...
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
shadow
Beiträge: 189
Registriert: 23.03.2005 17:52
Wohnort: Lübeck

Re: Ende eines Datablockes ermittlen

Beitrag von shadow »

Ist ja gut, das war ja nur ein Gedanke.

Aber hey, sowas wie foreach für array-Elemente ist eigentlich auch unnötig, wird aber aus bequemlichkeit doch gemacht. Also, wo wird denn dann die Grenze gezogen was sinnvoll ist und was nicht?
ThinkPad T61 (in Gedenken) | PureBasic 4.61 B1 (32) | Windows 7 (32SP1) | ArchLinux (32) | Syllable (32)
Antworten