Seite 1 von 1

Länge eines Memo-Feldes [ERLEDIGT]

Verfasst: Do, 12. Mai 2016 16:56
von Siggy
Guten Tag,

ich füge in meinem Programm, welches ich gerade programmiere Datensätze zusammen.

In diesem Fall sollten diese beliebig lang und groß sein, jedoch bin ich gerade als ich einige/viele Daten zusammengefügt habe auf einen Fehler gestoßen. :(

Ist ein Memo Feld begrenzt in der Zeichenzahl bzw. kann ich die Größe irgendwie abfragen? #-o

Danke schonmal:D

Re: Länge eines Memo-Feldes

Verfasst: Do, 12. Mai 2016 17:19
von Jan
Hallo,

Wenn Du FOXCDX benutzt passen da 16 TB rein, bei DBFNTX unbegrenzt :-D Sagt die Onlinehilfe. Ich denke mal das beide das gleiche sein sollen.

Jan

Re: Länge eines Memo-Feldes

Verfasst: Do, 12. Mai 2016 17:22
von Manfred
aber die Größe von 2GB darf nicht überschritten werden.

Re: Länge eines Memo-Feldes

Verfasst: Do, 12. Mai 2016 17:39
von Jan
Wieso nicht?

Jan

Re: Länge eines Memo-Feldes

Verfasst: Do, 12. Mai 2016 17:44
von Manfred
weil ich das schonmal hatte und da hat es geknallt. Natürlich in Kombination mit einer NTX DBF. Die war dann genauso groß. Was jetzt der Auslöser war....

Re: Länge eines Memo-Feldes

Verfasst: Do, 12. Mai 2016 17:55
von AUGE_OHR
FOXDBE (DATA-Komponente)

Größe einer Memo-Datei Theoretisches Limit ist 16 Terabyte oder 2^31
Blöcke. Bei einer Blockgröße von 64 Byte ist das Limit bei 128GB

Memoblockgröße 64 Bytes
(einstellbar zwischen 33 Bytes und 64 kB)

Memogröße Limitiert auf 2^31 Bytes (2 Gigabyte)
sowie
DBFDBE (DATA-Komponente)

Memo Felder benötigen 10 Byte, der Inhalt der Felder (Text) ist in Memo-Dateien gespeichert.
Die Länge des Textes für ein Memo-Feld ist nicht begrenzt

Größe einer Memo-Datei Limitiert auf Systemresourcen
was bei 32bit -> 2GB bedeutet

Re: Länge eines Memo-Feldes

Verfasst: Do, 12. Mai 2016 18:02
von brandelh
Nur bei der FOXDBE hat Xbase++ ordentlich aufgerüstet (oder musste wegen der Vorgaben).

Clipper konnte max 65 KB dagegen ist ein DBFDBE Memofeld groß, aber nicht unbegrenzt ;-)

schauen wir mal in die Doku:
Memo Fields always 10 bytes;
contents of the fields (text) stored in memo files and the length of the text in memo fields is not limited ... also nicht von Xbase++ künstlich begrenzt.
Size of a memo file Limited only by system resources ... Hier könnte 2 / 4 GB Dateigröße gemeint sein, oder die Stringlänge die max bereitsteht für Replace !

Re: Länge eines Memo-Feldes

Verfasst: Do, 12. Mai 2016 18:18
von brandelh
Jan hat geschrieben:Hallo,
Wenn Du FOXCDX benutzt passen da 16 TB rein, bei DBFNTX unbegrenzt :-D Sagt die Onlinehilfe. Ich denke mal das beide das gleiche sein sollen.
Jan
laut Doku bei 64 Byte Blockgröße "nur" 128 GB ...

wer schon einmal wie ich erlebt hat, dass Inhalt der Memofelder und Hauptdatei nicht mehr zusammen gepaßt haben, wird die nicht für solche Ablagen nutzen ;-)
Die Handhabung von beiden ist unterschiedlich, somit kann es nicht das gleiche sein.

Es begrenzen die möglichen Zeiger wobei für jeden die Blockgröße zur Verfügung steht, also Anzahl Zeiger * Blockgröße bei FOXCDX ist das eine 4 Byte Integer Zahl (LONG ?)
Daher auch die Berechnung in der Hilfe 2^31 * Standard-Blockgröße ... ergibt 128 GB.

Die 16 TB max habe ich schon oft gelesen, vermutlich eine Begrenzung von NTFS.

Und immer daran denken, der Feldinhalt muss vorher im RAM einer Variablen gewesen sein. Max. RAM einer 32 Bit Anwendung 3,5 GB ... wobei 500 MB schon recht viel sind.
Irgendwann um 2 bis 3 GB einer VAR dürfte alles absterben (XppFatal vermute ich).

Re: Länge eines Memo-Feldes

Verfasst: Do, 12. Mai 2016 18:40
von Herbert
Darf ich mal unbedarft fragen, wie man solche Grössen in ein Feld bringen kann? Wie generiert man so was in der Praxis?
Wir spechen doch von einem Datensatz und nicht von der Grösse der mmo-Datei , oder?

Re: Länge eines Memo-Feldes

Verfasst: Fr, 13. Mai 2016 2:01
von brandelh
Wir sprechen von einem Feld, wenn es um das geht was man mit einem Befehl in REPLACEN kann.
Allerdings gibt es auch interne Buffer, meist ein Datensatz bei DBFs, aber die paar Byte der anderen Felder spielen dann sicher keine große Rolle mehr.
Auch hängt es von der Art der Pufferung der Memodatei ab, vermutlich aber ein Vielfaches der Blockgröße damit man eine logische Platteneinheit voll bekommt (meist wohl 512 Byte oder 4 K).

Ich habe schon 500 MB in eine Variable mit memoread() eingelesen ( Rechner mit 64 Bit Windows und 8 GB Ram, sodass die EXE maximalen RAM zur Verfügung hatte).
1 GB sollte auch noch gehen, allerdings habe ich da aktuell keine zum Testen ... aber bald danach dürfte das Programm abschmieren weil ihm die Luft ausgeht.
Bei Zuweisungen oder Verarbeitungen gibt es ja auch häufig Kopien vom RAM Inhalt, die den Speicher belasten.

Ob das sinnvoll ist ist eine ganz andere Frage !

Ich nutze lieber Verweise auf Dateien und speichere die als externe Datei.

Re: Länge eines Memo-Feldes

Verfasst: Fr, 13. Mai 2016 8:09
von Jan
Siggy ging es ja darum zu erfahren, wie viel in ein Memofeld reinpasst. Und ich denke, jeder der hier angesprochenen Werte dürfte duchraus ausreichend sein.

Die Werte in der Hilfe sind vermutlich ohnehin eher akademischer Natur. Wie oben schon angedeutet wurde - was kann man denn da rein schreiben was dann mal eben 16 TB je Feld ausmacht??? Und wie will ich das auf einem Rechner verarbeiten können? Das ist so ähnlich wie mit dem aktuellen PDF-Standard - wer erzeugt schon Dokumente mit einer Seitenlänge von 381 km? Gehen tut das, aber wer macht sowas, wer braucht sowas?

Jan

Re: Länge eines Memo-Feldes

Verfasst: Fr, 13. Mai 2016 8:22
von Manfred
Jan hat geschrieben:...Das ist so ähnlich wie mit dem aktuellen PDF-Standard - wer erzeugt schon Dokumente mit einer Seitenlänge von 381 km? Gehen tut das, aber wer macht sowas, wer braucht sowas?

Jan
Steffen, wenn er gerade philosophiert. :badgrin:

Re: Länge eines Memo-Feldes

Verfasst: Fr, 13. Mai 2016 8:58
von Siggy
Danke!

Dann müsste das was ich in meinem Programm vor haben funktionieren.

Gruße,
Siggy :lol: