MemoRead() <-> LowLevel Funktionen [ERLEDIGT]

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi,

nur soweit ganz kurz: Die Sache mit der DELDBE klappt. Ich kann also die semikolonseparierten Daten übernehmen. Frage hier und heute bloß keiner, woran es lag. Darüber möchte ich jetzt lieber nicht sprechen. :roll:

OOps, habe gerade festgestellt, dass ich das Problem gar nicht erwähnt hatte hier. Noch peinlicher.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: MemoRead() <-> LowLevel Funktionen [ERLEDIGT]

Beitrag von Manfred »

Hi,

nächste Erfahrung gemacht. In der Anleitung steht folgendes:

Code: Alles auswählen

Rückgabe 

MemoRead() liest eine Datei komplett ein und gibt deren Inhalt als Zeichenkette zurück. Die Größe einer Datei ist nicht begrenzt. Wenn  <cFilename> einen ungültigen Dateinamen enthält oder nicht gefunden wurde, gibt MemoRead() ein Null-Zeichen ("") zurück. 
das ist irgendwie nicht wahr. Meine Textdatei ist 1,4 GB groß und mein RAM liegt bei knapp unter 3 GB. Das Programm meckert, "BASE/1005 nicht genügend Speicher". Auslagerungsdatei hat eine feste Größe von 3,5 GB.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: MemoRead() <-> LowLevel Funktionen [ERLEDIGT]

Beitrag von brandelh »

Hallo Manfred,

ein Win32bit Programm ist auf max. 2 GB Hauptspeicher beschränkt.
DLL und Arbeitspeicher etc. brauchen auch noch was ... ich meine schon 1 GB eingelesen zu haben,
aber irgendwann ist halt immer Schluss :D
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: MemoRead() <-> LowLevel Funktionen [ERLEDIGT]

Beitrag von Manfred »

Hi Hubert,

es gibt da so Worte wie : unbegrenzt, kein Limit usw. Wozu gibt es die, wenn sie keine Gültigkeit haben, aber trotzdem benutzt werden?

Also heißt das, 3 GB RAM nutzen nur dem OS etwas? Aber selbst wenn, dann wäre ja immer noch was Platz.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: MemoRead() <-> LowLevel Funktionen [ERLEDIGT]

Beitrag von brandelh »

Hallo Manfred,

nein, 3 GB Hauptspeicher nützen auch deiner Anwendung, die kann nämlich 2 GB RAM nutzen, ohne
dass ausgelagert werden muss, wenn das weitere 1 GB für den Rest reicht ;-)
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21200
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: MemoRead() <-> LowLevel Funktionen [ERLEDIGT]

Beitrag von Manfred »

Hi,

nur mal so ganz kurz, wie die Anleitung zu verstehen ist:

Andreas Herdt vom 05.10.2009

Code: Alles auswählen

.....
Die Aussage in der Doku muss man auch so lesen, dass viele ehemalige Clipper
Programmierer mit Beschränkungen lebten die vom 16 Bit Umstande herrühren.
Diese Beschränkungen waren in der Größenordnung 32 KByte zu sehen. Die
Doku reflektiert also den Umstand, dass man sich über Speicher keine Sorgen
machen muss - in der Regel steht zur Verfügung, was in der Kiste auch drin
steckt.

MlCount und MemoLine arbeiten genau wie MemoRead. Eine Datei wird
als String eingelesen und die Anzahl der Zeilen bzw. eine Zeile wird zurückgegeben.

Grosse Dateien mit MlCount und MemoLine zu bearbeiten ist deshalbe sehr
inperformant. Bei jedem Function call wird die gesamte Datei von der Festplatte
geladen. Hier lohnt es sich absolut eigene Hilsffunktionen zu schaffen, um
das immer wieder Neuladen zu vermeiden.
gut zu wissen....

Also muß ich mir doch was eigenes zusammenfröddeln...
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2936
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: MemoRead() <-> LowLevel Funktionen [ERLEDIGT]

Beitrag von Wolfgang Ciriack »

Hallo Manfred,

schau die mal die Funktionen von eXPress++ an:

Code: Alles auswählen

nHandle := DC_TXTOPEN( 'dclip.sys' )
 do while !dc_txteof( nHandle )
   ? dc_txtline( nHandle )
   dc_txtskip( nHandle, 1 )
 enddo
 dc_txtclose( nHandle )
Viele Grüße
Wolfgang
Antworten