GLBasic forum

Other languages => GLBasic - de => Topic started by: WPShadow on 2013-Jun-11

Title: Frage zu OPENFILE
Post by: WPShadow on 2013-Jun-11
Hi,

wird bei Openfile bereits etwas geladen oder wird einfach nur das File zum Laden bereit gestellt?

Ich frage, weil ich versuchen möchte ein größeres File zu erstellen (z.B. 100mb+) und dort mal eine spezifische Zeile suchen möchte --> wie z.B. bei VIM o.ä. Editoren

lg

W.
Title: Re: Frage zu OPENFILE
Post by: Heiko on 2013-Jun-11
Meiner Meinung nach wird das File geladen.
Es wird ja direkt zum Lesen bzw. Speichern bereitgestellt.
Hab mal vor ner Weile was mit openfile gemacht und dort konnte ich nach openfile direkt auf die datei zugreifen.
Erst openfile und dann mit den READ.... Befehlen liest man dann aus dem channel in welchen die Datei geladen wurde.
Title: Re: Frage zu OPENFILE
Post by: WPShadow on 2013-Jun-11
ok, gerade bei einem großen File wäre das also tödlich zu benutzen...

Gut zu wissen. Danke dir!  =D
Title: Re: Frage zu OPENFILE
Post by: Heiko on 2013-Jun-11
Ja also wird wohl dann Performancemässig nen neuen Tiefstand geben, grins.
Aber muss ja auch für sowas ne Lösung geben.

Wobei 100MB Text schon echt viel ist.
Title: Re: Frage zu OPENFILE
Post by: kanonet on 2013-Jun-11
Glaube eigentlich nicht, dass die Datei bereits geladen wird, wäre ja Unsinn. Kannst doch einfach mir einer großen Datei probieren, ob es Performanceprobleme gibt, oder nicht.
Title: Re: Frage zu OPENFILE
Post by: WPShadow on 2013-Jun-11
Im Grunde würde es ja auch keinen Sinn ergeben.

Ich mache mal ein paar Tests, schreibe mal ein paar Files mit Blödsinn voll und teste, wie sich das Ganze verhält.
Title: Re: Frage zu OPENFILE
Post by: Schranz0r on 2013-Jun-11
Ich tendiere zum nicht geladen :)
Title: Re: Frage zu OPENFILE
Post by: Marmor on 2013-Jun-11
ganz genau  Ocean.
Title: Re: Frage zu OPENFILE
Post by: Heiko on 2013-Jun-11
achso....also wird dann jeweils bei jedem zugriffsbefehl das file geladen?
ist ja auch bissl umständlich oder?
Title: Re: Frage zu OPENFILE
Post by: WPShadow on 2013-Jun-11
Umständlich auf jeden Fall!

Nein, mein Gedanke dabei war das File zu öffnen und vorerst einmal nur einen Teil daraus zu laden.

Also genau soviel, wie auf eine Seite paßt. Dabei das Programm einfach mitrechnen lassen, wo genau man ist und in der wievielten Zeile man gerade schreibt (oder so)

Momentan experimentiere ich aber noch etwas damit herum. Mal sehen was draus wird!  :D

Title: Re: Frage zu OPENFILE
Post by: Schranz0r on 2013-Jun-11
Nein Heiko,

die Datei wird nie ganz geladen, es werden je nach bedarf "bits und bytes" geladen, je nach Abfragung ( READBYTE, READLONG usw )
Title: Re: Frage zu OPENFILE
Post by: WPShadow on 2013-Jun-12
Ok, das haut so halbwegs hin, obwohl er mir bei READLINE immer wieder einen Fehler zurück gibt:

keine Datei

Werde aus der Meldung nicht ganz schlau, da mit OPENFILE die Datei korrekt geöffnet wird und auch TRUE zurück gibt
Title: Re: Frage zu OPENFILE
Post by: Quentin on 2013-Jun-12
das hängt auch vom Betriebssystem ab. Die Daten werden beim Lesen aber auch gepuffert. Liest man z.B. nur das erste Byte einer Datei, wird "physikalisch" nicht nur dieses eine, sondern gleich z.B. einige KB gelesen, was weitere Lesevorgänge beschleunigt. Also musst du dir auch bei großen Dateien nicht gleich um Speicher Gedanken machen, wenn das File nicht komplett im Speicher halten willst.

gucksdu hier:
http://stackoverflow.com/questions/5130375/how-exactly-does-fopen-fclose-work
Title: Re: Frage zu OPENFILE
Post by: WPShadow on 2013-Jun-12
Ich dachte daran mir immer Speicherblöcke zu holen, z.B. die ersten 20 Zeilen als Text und rein in einen Array, wenn man ganz unten angekommen ist und manuell "umblättern" auslöst, dann wieder 20 Zeilen.

Als Vorgang war mein Gedanke: Öffnen, bis zur entsprechenden Zeile durcharbeiten, Auslesen und schließen.

Ist zwar nicht sehr effizient, aber grundlegend sollte es funktionieren. Leider kommt mir da der kleine Fehler in den Weg.

Ich lade heute Abend mal den Code hoch...
Title: Re: Frage zu OPENFILE
Post by: WPShadow on 2013-Jun-12
Da ich noch nicht viel damit gemacht habe mit OPENFILE ist das mal der erste, sehr grobe Ansatz...

Da der Fehler mitten im Testen entstanden ist und ich keine Zeit hatte, das Ganze durch zu korrigieren, lade ich den Code mal so hoch! Grundlegend sollte das Ganze aber ziemlich selbst erklärend sein.

Die Fehlermeldung, die ich bekomme ist folgende:

Code (glbasic) Select

error: 3
"F:\GLBasic\GLBasic\Editor\Editor.gbas"(74) error : Keine Datei


Das hier ist der (noch sehr grobe) Code dazu:

Code (glbasic) Select

// --------------------------------- //
// Project: Editor
// Start: Tuesday, June 11, 2013
// IDE Version: 11.322


// SETCURRENTDIR("Media") // go to media files

GLOBAL loaded, text$[], id

DIM text$[20]

IF DOESFILEEXIST("dummy.txt") = FALSE THEN create_testfile()

main()

FUNCTION create_testfile:
LOCAL tmp, tmp$

OPENFILE(0, "dummy.txt", 0)

FOR tmp = 0 TO 99999
tmp$ = tmp

WRITELINE 0, tmp$ + " dummy dummy dummy"
NEXT

CLOSEFILE 0

ENDFUNCTION


FUNCTION main:
LOCAL tmp

load_data(0)

WHILE TRUE

IF loaded = FALSE THEN load_data(id)

FOR tmp = 0 TO 19
PRINT text$[tmp], 0, 0 + (tmp * 20)
NEXT

IF KEY(208) = 1
loaded = FALSE
INC id, 1
ENDIF

SHOWSCREEN
WEND

ENDFUNCTION

FUNCTION load_data: id
LOCAL ok, tmp, counter, tmp_counter

ok = OPENFILE(1, "dummy.txt", 1)

counter = id + 20

WHILE id < counter

IF tmp_counter >= id THEN READLINE 1, text$[tmp]


INC tmp_counter, 1
WEND


FOR tmp = 0 TO 19

NEXT

CLOSEFILE 1


loaded = TRUE
ENDFUNCTION
Title: Re: Frage zu OPENFILE
Post by: Quentin on 2013-Jun-13
deiner seltsamen Logik in load_data kann ich nicht so ganz folgen. Allerdings liest du eine Zeile immer in text$[0] ein, weil tmp nirgends hochgezählt wird. Das Teil liest auch fleissig, vermutlich bis über das Dateiende hinaus, daher dann die Meldung "Keine Datei".

Selbsterklärend ist das für mich nicht.

counter = id + 20

aha, aber weder counter noch id werden anschließend verändert, nur tmp_counter, also ist id immer < counter ==> Endlosschleife. Damit liest du irgendwann über das Dateiende hinaus.
Title: Re: Frage zu OPENFILE
Post by: WPShadow on 2013-Jun-13
Ich sollte keinen Code online stellen, in dem ich vorher herum "gepfuscht" habe  :D

Eigentlich hatte ich die Schleife auskommentiert und drei DEBUGs drin stehen! *ggg*

Ich korrigiere den Code heute Abend mal und stelle die richtige Version online... Ich hab die falsche Version hoch geladen...

Ab 00:00 ist das Hirn etwas schwerfällig, wenn es um's denken geht  :nana:
Title: Re: Frage zu OPENFILE
Post by: WPShadow on 2013-Jun-14
So, habe den Code mal etwas korrigiert. Seltsamerweise funktioniert er auf meinem Rechner noch immer nicht, identische Fehlermeldung, jedoch auf dem Laptop fehlerfrei...  :blink:

Wieso auch immer. Ich werde wohl GLBasic mal neu installieren müssen und alles aus der Registry raus klopfen.

Wenigstens funktioniert es jetzt mal richtig...  =D
Title: Re: Frage zu OPENFILE
Post by: Quentin on 2013-Jun-14
jo, das funktioniert besser :)

bereinige doch erst mal einfach das Kompilier-Verzeichnis und versuchs noch mal, bevor du alles neu installierst.
Title: Re: Frage zu OPENFILE
Post by: WPShadow on 2013-Jun-14
Genauso mache ich es...

Ich werde mal ein bißchen an meinem Text - Editor weiter arbeiten. Soll ich dafür einen eigenen Threat eröffnen, damit ihr mitschauen und schimpfen könnt?

Und ja, bitte schimpft...   :D
Title: Re: Frage zu OPENFILE
Post by: Quentin on 2013-Jun-14
Gegenfrage:
Warum willst du dir das antun?
Einen Editor mit GLBasic ist so ... so wie einen First-Person-Shooter mit ABAP-OO zu schreiben :)
Title: Re: Frage zu OPENFILE
Post by: WPShadow on 2013-Jun-14
Ich erkläre es dir mal so:

Im Moment quäle ich mich im Studium und in der Arbeit mit Java und div. Tomcat - Servern herum, komme kaum zum Zocken oder zu sonst irgendwas... Und das nervt...

Ich hätte 3 Projekt bei denen ich nicht voran komme:

1. LR - mein Überprojekt, das ich inzwischen 10mal redesignt habe und das ich erst dann neu starten werde, wenn ich mit allen meinen Design - Dokumenten fertig bin
2. ein Physik Testprojekt - leider fehlen mir hierzu noch zig Infos um auch nur irgendwie voran komme, zu 10% funktioniert schon alles mit Newton, leider sind die Infos zu Newton aber etwas eingeschränkt
3. mein dynamic Window Testprojekt - das ich für LR entwickeln möchte und für das ich absolut keine Zeit habe

Also bastle ich mir einfach mal einen Editor zusammen, als "mir ist langweilig in der FH und ich mag nicht mehr zuhören nach einen 8 Stunden Tag" - Projekt.

Außerdem kann ich da diverse Tests durchführen und testen, wie ich Daten richtig buffern kann --> das kann ich alles noch brauchen, irgendwann. Wenn es mir gelingt einige Elemente so zu entwickeln, daß ich sie auch in anderen Projekten einsetzen kann, dann erspare ich mir später einiges an Arbeit!

Und natürlich nicht zu vergessen die Herausforderung in GLBasic einen Text - Editor zu schreiben! Es geht dabei weder um sinnvoll oder etwas ähnliches... Es geht darum GLBasic zu bedienen wie Chuck Norris...  :D
Title: Re: Frage zu OPENFILE
Post by: Quentin on 2013-Jun-14
ok, Chuck Norris würde in zwei Tagen mit GLBasic Word schreiben, in 3D, ohne Entity-System
Title: Re: Frage zu OPENFILE
Post by: WPShadow on 2013-Jun-14
hmmmmm

Word in 3D...

Herausforderung angenommen  :D

Nein, das mache ich lieber nicht, sonst killt uns Schranzi, weil wir wieder sinnloses Zeug programmieren... So wie damals den "Dem Stein beim wachsen zusehen - Simulator"  :nana:
Title: Re: Frage zu OPENFILE
Post by: Schranz0r on 2013-Jun-22
:D Freaks !
Title: Re: Frage zu OPENFILE
Post by: WPShadow on 2013-Jun-24
@Schranz0r: Du bist ja nur neidisch, weil du die Stimmen nicht hörst  :P  :booze:
Title: Re: Frage zu OPENFILE
Post by: Schranz0r on 2013-Jun-24
Ne, mich labert aber den ganzen Tag der Typ neben mir zu... Komisch der schaut mir auch sehr ähnlich, sollte ich mir sorgen machen?
Title: Re: Frage zu OPENFILE
Post by: Heiko on 2013-Jun-24
Ach weißt....ich leb auch in meiner eigenen Welt....aber macht euch keine Sorgen..... Man kennt mich da....lach