Daten aus Stringgadget auslesen

Anfängerfragen zum Programmieren mit PureBasic.
odin
Beiträge: 7
Registriert: 01.07.2008 22:01

Daten aus Stringgadget auslesen

Beitrag von odin »

Hallo!

Ich schreibe derzeit ein Programm und benötige dort folgendes:

1) Text, der mithilfe von Stringgadget eingegeben wird auslesen + in externe
Datei speichern, auf die danach wieder zugegriffen werden kann.
2) Text aus externe Datei auslesen + ausgeben.
3) Wenn man auf Button klickt, der Stringgadget (oder anderen Gadget erzeugt), überprüfen, ob vorher schon mit einem anderen Button ein Gadget erzeugt wurde (damit sie sich nicht über"kreuzen").

Danke für die Hilfe!
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Beitrag von RSBasic »

>1) Text, der mithilfe von Stringgadget eingegeben wird auslesen
GetGadgetText(#Gadget)

>Datei speichern
CreateFile(), WriteString() oder WriteStringN() ...

>2) Text aus externe Datei auslesen
ReadFile() oder OpenFile(), ReadString() ...

>ausgeben
String$ = ReadString()
Debug String$

Bitte unbedingt die PB-Hilfe lesen :wink:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
odin
Beiträge: 7
Registriert: 01.07.2008 22:01

Beitrag von odin »

RSBasic hat geschrieben:>1) Text, der mithilfe von Stringgadget eingegeben wird auslesen
GetGadgetText(#Gadget)

>Datei speichern
CreateFile(), WriteString() oder WriteStringN() ...

>2) Text aus externe Datei auslesen
ReadFile() oder OpenFile(), ReadString() ...

>ausgeben
String$ = ReadString()
Debug String$

Bitte unbedingt die PB-Hilfe lesen :wink:
Hi und danke für die schnelle Antwort. :)
Die PB-Hilfe habe ich ja gelesen/bzw. ich bin auch auf CreateFile() gestoßen und mit dem GetGadgetText(#Gadget), aber irgendwas mach ich falsch (was ein Wunder :roll: )

Hier der Codeausschnitt:

Code: Alles auswählen

           Case 1 :
           If CreateGadgetList(WindowID(0))
             StringGadget(6, 200,  0, 800, 400,  "Eingabe ")
             ButtonGadget(7, 200,400, 100,  50,  "Eingeben")
           EndIf   
            If GetGadgetText(#Gadget) 
               CreateFile(0, "test.txt")
            Else
            MessageRequester("Fehler", "fehler")
            EndIf
1. Frage:
Durch was muss ich "#Gadget" ersetzen?

2. Frage:
Funktioniert es dann, dass er den Text des einen Stringgadgets (ich habe mehrere Stringgadgets benutzt) in die Datei "test.txt" speichert?

MfG!
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Beitrag von Bisonte »

Ach du schreck... ;)

Also: Unbeding mal in der hilfe nach den Parametern von den Befehlen schauen,
die du da benutzt....

Dann kommst du mit sicherheit ganz schnell alleine drauf ;)

Aber ein kleiner Tip:

Du definierst ein StringGagdget mit der Nummer 6, also sollte man evt. mit
GetGadgetText auch das Gadget Nr 6 auslesen....

Und in der Hilfe solltest du auch die Beispiele studieren....
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​​
odin
Beiträge: 7
Registriert: 01.07.2008 22:01

Beitrag von odin »

Bisonte hat geschrieben:Ach du schreck... ;)

Also: Unbeding mal in der hilfe nach den Parametern von den Befehlen schauen,
die du da benutzt....

Dann kommst du mit sicherheit ganz schnell alleine drauf ;)

Aber ein kleiner Tip:

Du definierst ein StringGagdget mit der Nummer 6, also sollte man evt. mit
GetGadgetText auch das Gadget Nr 6 auslesen....

Und in der Hilfe solltest du auch die Beispiele studieren....
Ahh...danke! :oops: :oops:
Das Problem wäre gelöst, jedoch schreibt er nicht den eingegebenen Text
aus dem Stringgadget in die Datei, wie löse ich denn das Problem?
In der Hilfe habe ich nichts dazu gefunden, nur wie man eigenständige
Dateien erstellt.

Code: Alles auswählen

Ergebnis = CreateFile(#Datei, DateiName$)
Außerdem steht darunter:
Öffnet eine leere Datei. Existierte die angegebene Datei bereits, wird diese geöffnet und mit einem leeren Inhalt ersetzt! Seien Sie vorsichtig!
Also kann ich CreateFile() doch gar nicht verwenden, oder?
Bei WriteString() blick ich nicht so ganz durch...bitte noch mal um hilfe :cry:
Andreas_S
Beiträge: 787
Registriert: 14.04.2007 16:48
Wohnort: Wien Umgebung
Kontaktdaten:

Beitrag von Andreas_S »

Die Datei hat ebenfalls eine ID...
Also auch dort einfügen.

Ich kann dir nur sagen dass das so nicht lange witer gehn wird...
Es gibt ausreichend tutorials die solche Fragen klären...

PureBoard hat geschrieben:BeitragVerfasst am: Gestern um 0:21:59 Titel:
:?
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Beitrag von Bisonte »

Und wieder sagt man : Studiere auch die Beispiele... ;)

Da gibts auch eines was sehr schon die Befehle zeigt, die man braucht... und wie man sie zusammen verwendet...
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
Sebastian
Beiträge: 322
Registriert: 14.06.2006 16:46
Wohnort: Kiel

Beitrag von Sebastian »

Hallo Odin,
ich habe mal ein Beispiel für Dich gecodet, dass eigentlich genau das tut, was Du Dir vorgestellt hast. Jetzt musst Du mir aber versprechen, dass Du Dir mal die Anfänger-Tutorials zu Gemüte führst!

Code: Alles auswählen

Enumeration ; nummeriert die Konstanten durch

#MainWindow ; wird 0
#StringGadget ; wird 1
#ButtonGadget_1 ; wird 2
#ButtonGadget_2
#File
#EditorGadget
#TextGadget ; wird 6


EndEnumeration

; Fenster und Gadgets erstellen

OpenWindow(#MainWindow,#PB_Ignore,#PB_Ignore,320,240,"Eingabefenster")
CreateGadgetList(WindowID(#MainWindow))
StringGadget(#StringGadget,0,0,100,20,"Eingabe hier")
ButtonGadget(#ButtonGadget_1,0,40,60,20,"Bestätigen")
TextGadget(#TextGadget,0,80,160,20,"keine Daten")
ButtonGadget(#ButtonGadget_2,0,120,60,20,"Auslesen")
EditorGadget(#EditorGadget,0,140,320,100,#PB_Editor_ReadOnly)

Repeat ; Hauptschleife

Event= WaitWindowEvent() ; auf aktuelles Event warten und dann merken 

If Event=#PB_Event_Gadget ; falls ein Gadget aktiviert wurde

If EventGadget()= #ButtonGadget_1 ; falls der Button geklickt wurde
 Eingabetext$= GetGadgetText(#StringGadget) ; Eingabe auslesen
 OpenFile(#File,"text.txt") ; Datei öffnen
 FileSeek(#File,Lof(#File))  ; an das Ende der Datei gehen
 WriteStringN(#File,Eingabetext$) ; Eingabe in Datei schreiben
 SetGadgetText(#TextGadget,Eingabetext$ + " gespeichert") ; Eingabe in Textfeld als gespeichert ausgeben
 CloseFile(#File) ; Datei schließen
EndIf

If EventGadget()= #ButtonGadget_2 ; falls der zweite Button geklickt wurde
 OpenFile(#File,"text.txt") ; Datei öffnen
 ClearGadgetItemList(#EditorGadget) ; EditorGadget leeren
 Repeat
  GelesenerString$= ReadString(#File) ; String auslesen
  If GelesenerString$ <> "" ; Falls String gelesen wurde (aus der Datei)
   AddGadgetItem(#EditorGadget,-1,GelesenerString$) ; im EditorGadget an letzter Position ausgeben
  EndIf
 Until GelesenerString$ = ""
 CloseFile(#File)
EndIf

EndIf ; Event=#PB_Event_Gadget 

Until Event= #PB_Event_CloseWindow ; Ende der Hauptschleife
(Win 11 64-bit, PB 6.04 und 6.10)
odin
Beiträge: 7
Registriert: 01.07.2008 22:01

Beitrag von odin »

Hi!

Vielen, vielen Dank!
Sorry für den Aufwand :oops: , ich werde mir euren Rat jetzt echt zu Gemüte ziehen: Mehr Tutotials machen und die Hilfe ordentlich durchgehen. :oops:

Trotzdem, vielen großen Dank noch mal für die ganze Hilfe und für die Ratschläge![/b]
Antworten