Datei ist doch geöffnet!

Anfängerfragen zum Programmieren mit PureBasic.
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Datei ist doch geöffnet!

Beitrag von Tombi »

PB 3.30 meint in Linie 20 einen Fehler aufzufinden.
Die Datei ist jedoch schon geöffnet!

[quote=Fehlermeldung]Error at line 20 : There is no current File.[/quote]

Anfang meiner Datei:

Code: Alles auswählen

Global line.w
Global a_a.w
Global b_b.w

file$ = OpenFileRequester("Öffne...","C:","Map-Datei (*.map)|*.map|Textdatei (*.txt)|*.txt",0)

ReadFile(0,file$)



Procedure SearchOnFile(text$)
ReadFile(1,file$)
If text$ = ""
  MessageRequester("Error","An SearchOnFile() wurde ein leerer String überreicht. Das Programm muss daher beendet werden.",0)
  End
EndIf

Repeat
zeile$ = ReadString() ;LINIE 20!
aaa = FindString(zeile$,text$,0)

If aaa
gefunden = 1
EndIf

Until Eof(1)

CloseFile(1)

If gefunden
  ProcedureReturn 1
Else
  MessageRequester("Error",text$+" wurde in der aktuellen Datei nicht gefunden!",0)
  ProcedureReturn 0
  End
EndIf

EndProcedure
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

Ich hab zwar kein 3.30, aber da braucht man bestimmt auch "Ergebnis = OpenFile(#Datei, DateiName$)" :wink:
Zuletzt geändert von scholly am 13.04.2008 15:41, insgesamt 1-mal geändert.
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Beitrag von Tombi »

Habe ich schon getestet, bringt mir nichts...
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
DarkDragon
Beiträge: 6291
Registriert: 29.08.2004 08:37
Computerausstattung: Hoffentlich bald keine mehr
Kontaktdaten:

Beitrag von DarkDragon »

Ja wie du schon sagtest: Die Datei ist doch schon geöffnet. Wieso öffnest du sie dann in der Prozedur nochmal? Und file$ ist ja nichtmal global, also versucht es innerhalb der Prozedur die Datei ohne Namen zu öffnen.

Und dann prüf doch bitte ob das Ergebnis von ReadFile <> 0 ist, denn dann ist die Datei erst offen und erst dann.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

Tombi hat geschrieben:Habe ich schon getestet, bringt mir nichts...
Dir nicht, aber PB braucht das. :mrgreen:
Der OpenFilerequester holt nur den Dateinamen, aber er öffnet das File nicht.
Öffnen und Schließen bleibt Dir überlassen.
Die Beispiele im Code-Archiv mögen zwar erst ab 3.94 laufen, aber bei Deiner Version (welche ist es denn ?) sollte im Examples-Verzeichnis auch ein "File.pb" und ein "Requester.pb" sein, die Dir in Kombination zeigen, wie es geht.

Sorry, daß ich nicht mit Code helfe, aber ich bin nicht lang genug dabei um zu wissen, was damals unter 3.30 ging :|
Ich bin blutiger PB-Anfänger.
seit 17.12.08: PB 4.3 unter XP Home(SP3)
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Beitrag von Tombi »

Die File.pb hat aber auch kein OpenFile(), sondern nur CreatFile() und ReadFile(). Und ReadFile() habe ich ja drinne.

File.pb:

Code: Alles auswählen

;
; ------------------------------------------------------------
;
;   PureBasic - File example file
;
;    (c) 2001 - Fantaisie Software
;
; ------------------------------------------------------------
;

MessageRequester("PureBasic", "Welcome !"+Chr(13)+"PureBasic will write a file named: PureBasicTestFile.pb", 0)

If CreateFile(0, "PureBasicTestFile.txt")
  WriteStringN("         This is a PureBasic file test")
  WriteString("Now it's on ")
  WriteString("the same line.")

  CloseFile(0)
Else
  MessageRequester("PureBasic", "Error: can't write the file", 0)
  End
EndIf

If ReadFile(0, "PureBasicTestFile.txt")

  First$ =  Trim(ReadString())
  MessageRequester("PureBasic", "Line read: "+First$, 0)
  
  CloseFile(0)
Else
  MessageRequester("PureBasic", "Error: Can't read the file", 0)
EndIf

End 
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Beitrag von Tombi »

Fehler gefunden: Die gleiche Datei konnte nicht mehrmals geöffnet werden :shock:
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag von STARGÅTE »

@Tombi

mach bitte deine Signatur wieder richtig :|
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Beitrag von Tombi »

Jup mache ich.

Außerdem lag es nicht wie oben beschrieben daran, dass ..., sondern file$ war nicht global!
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Tombi
Beiträge: 369
Registriert: 05.03.2008 22:05

Beitrag von Tombi »

Jup mache ich.

Außerdem lag es nicht wie oben beschrieben daran, dass ..., sondern file$ war nicht global!
Bild Bild Bild
Intel Pentium 4 630 (3 GHZ)
Antworten