Wo liegt denn jetzt die max. Größe bei FReadStr() ? [ERLEDIG

Sonstiges (nicht kategorisierbar)

Moderator: Moderatoren

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

Re: Wo liegt denn jetzt die max. Größe bei FReadStr() ?

Beitrag von Manfred »

Klaus,

ich bin mir nicht wirklich sicher, ob wir hier alle von ein und demselben reden. Das sollte erstmal geklärt werden.
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: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Wo liegt denn jetzt die max. Größe bei FReadStr() ?

Beitrag von brandelh »

Hi,

Selbst mit dem ältesten mir bekannten Clipper gab es KEINEN ABSTURZ wegen einem chr(0) im String !

chr(0) ist einfach das "Stringende"-Zeichen in C. Ein fReadStr() wird einfach den String bis vor dem chr(0) zurückgeben.
Wenn es abbricht wegen zu langer Zeile, dann ist das entweder gar keine Textdatei oder aber eine UNIX, die keine chr(13)+chr(10) enthält.
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Wo liegt denn jetzt die max. Größe bei FReadStr() ?

Beitrag von Manfred »

Puh, nochmal.

Meine Eingangsfrage war doch, ob es eine Größenbegrenzung gibt, weil das Programm direkt beim Versuch des Einlesens der sehr großen Textdatei mit einem Xppfatal.log beendet wird. Das kann doch zunächst nicht an einem CHR(0) liegen. Oder liege ich hier schon falsch? Ein Chr(0) sagt doch Freadstr() "hier ist Feierabend, Deine Arbeit ist beendet, gebe ab an den Rest, aber steige nicht aus." Ist das bis hier hin richtig?
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
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Wo liegt denn jetzt die max. Größe bei FReadStr() ?

Beitrag von AUGE_OHR »

AUGE_OHR hat geschrieben:äh ... em ... und was ergibt den bei dir FILE() oder FOpen() ?
noch mal ganz "dumm" gefragt : bekommst du bei FOpen() ein "Handle" > 0 ?
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Wo liegt denn jetzt die max. Größe bei FReadStr() ?

Beitrag von Manfred »

Ja, immer noch.
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: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Wo liegt denn jetzt die max. Größe bei FReadStr() ?

Beitrag von brandelh »

Manfred hat geschrieben:Puh, nochmal.
Meine Eingangsfrage war doch, ob es eine Größenbegrenzung gibt, weil das Programm direkt beim Versuch des Einlesens der sehr großen Textdatei mit einem Xppfatal.log beendet wird.
Klare Antwort, JAIN :D

FReadStr() ist von Xbase++ her nicht auf eine feste maximale Länge beschränkt (solange man den 2. Parameter nicht setzt).
ABER: Xbase++ kann nicht endloslange Strings erzeugen, weil Windows das nicht kann. Irgendwann kracht es da halt.
Manfred hat geschrieben:... mit einem Xppfatal.log beendet wird. Das kann doch zunächst nicht an einem CHR(0) liegen. Oder liege ich hier schon falsch?
Ein Chr(0) sagt doch Freadstr() "hier ist Feierabend, Deine Arbeit ist beendet, gebe ab an den Rest, aber steige nicht aus." Ist das bis hier hin richtig?
100 % richtig !
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Wo liegt denn jetzt die max. Größe bei FReadStr() ?

Beitrag von Manfred »

Also reden wir hier nicht von CHR(0), sondern von Grütze. So wie ich es schon weiter am Anfang geschrieben hatte. Jetzt heißt es suchen. Aber das verschiebe ich, weil ich noch etwas anderes zu tun habe. Das kommt später.
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: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Wo liegt denn jetzt die max. Größe bei FReadStr() ?

Beitrag von brandelh »

Manfred hat geschrieben:Jetzt heißt es suchen. Aber das verschiebe ich, weil ich noch etwas anderes zu tun habe. Das kommt später.
100 % falsch !

Wie oft soll ich noch schreiben, dass es nur an den fehlenden chr(13)+chr(10) liegen kann !

Entweder das ist keine Textdatei oder eine UNIX Textdatei.
Diese muss man einfach aufbessern und dafür ist Xbase++ nicht wirklich gut geeignet ;-)
Versuche es mit MED, wenn das nicht geht, liefere ich eine kleine EXE die UNIX Textdateien nach PC Textdateien übersetzt.
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Wo liegt denn jetzt die max. Größe bei FReadStr() ?

Beitrag von AUGE_OHR »

hi,
Manfred hat geschrieben:

Code: Alles auswählen

   nHandle := FOpen(oSysPara:cProgrammPfad + "\download\phononet\artuld.txt",FO_READ)

// hier kein IF FError() <> 0 

   cBuffer        := FReadStr(nHandle,FSize(nHandle))
also in dem Sample von dir ist kein IF FError() <> 0 vorhanden ...
gruss by OHR
Jimmy
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Wo liegt denn jetzt die max. Größe bei FReadStr() ?

Beitrag von Manfred »

@Jimmy,

das stimmt, aber es wird eine 0 geliefert. Also fehlerfrei.

@Hubert

Ich habe hier irgendwann den Überblick verloren, wer was von mir will/wollte. Irgendwie sah ich das Thema wieder aus dem Ruder laufen. Wenn man innerhalb kürzester Frist den Anschein hat, das der eine hüh, der andere hott, der nächste brr und wieder einer holla ruft, dann steht man mittendrin und erkennt nichts mehr. Ich habe versucht etwas Ordnung hineinzubringen, aber es wurden immer mehr Antworten, zu denen ich irgendwann überzeugt war keine Fragen gestellt zu haben. :confused2:

Es ist eine reine Textdatei, weil es ja bisher immer lief. Weiterhin wird sie unter Windows erzeugt, weil es ein Windowsprogramm ist. Aber ich werde jetzt mal versuchen das Teil anders zu öffnen um nach Deinem Vorschlag zu suchen.
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: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Wo liegt denn jetzt die max. Größe bei FReadStr() ?

Beitrag von Manfred »

Ich habe den MED installiert und einfach mal versucht die Textdatei zu öffnen

Es gab diese Fehlermeldung

Code: Alles auswählen

Die Anweisung in "0x00429886" verweist auf Speicher in "0x0000000c". Der Vorgang read konnte nicht auf dem Speicher durchgeführt werden.
Und das Programm hat sich sofort verabschiedet.

Hm, keine Ahnung was ich jetzt genau damit anfangen soll.
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: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Wo liegt denn jetzt die max. Größe bei FReadStr() ?

Beitrag von brandelh »

Hallo Manfred,

*** zunächst, wie groß ist die Datei wirklich *** ?

ich habe mal in meinen alten Sachen gesucht und das Programm gefunden, mit dem ich unsere Großrechner Dateien
verbessert habe. Die Funktion ForceRTrim( cWorkBuffer ) entfernt hierbei in einem Block mit mehreren Zeilen
die Leerzeilen am Ende. Ich habe hier CRLF verwendet, was als chr(13)+chr(10) definiert ist verwendet.
Um flexibler zu sein müsste man eine Variable benutzen, z.B. cZeilenEnde und beim Überspringen die Länge von cZeilenEnde berücksichtigen.
Sinnvoll wäre auch intern die maximale Zeilenlänge zu ermitteln, dafür habe ich sogar ein fertiges Beispiel ....

Du müsstest die Prüfung nach chr(0) und chr(26) // Dateiendezeichen noch um die Prüfung des Zeilenendes erweitern.
Unix = chr(10)
Windows = chr(13)+chr(10)
Mac = chr(13)
also etwa so:

Code: Alles auswählen

#define CRLF chr(13)+chr(10)
// cBuffer sollte ab 4 KB sein, mehr als 250 KB ist aber nicht sinnvoll.
do case
    case ! CRLF $ cBuffer .and. chr(10) $ cBuffer // UNIX Datei
           cZeilenEnde := chr(10)
    case ! CRLF $ cBuffer .and. chr(13) $ cBuffer // MAC Datei
           cZeilenEnde := chr(13)
    otherwise
           cZeilenEnde := CRLF
end

Code: Alles auswählen

#include "common.ch"
#define CRLF chr(13)+chr(10)

#ifdef __OS2__
   #define OS_BEST_BLOCK_LEN 50
#else
   #define OS_BEST_BLOCK_LEN 250
#endif

procedure main ()
   local nQuelle, nZiel, cBuffer, nBytes, nBufferLen, nChr26, nChr0, nKleinZiel, nStart, nEnde
   local cWorkBuffer, cWorkBufferRest,cBV, nBV
   local cQuelle, cZiel, nBlockLenInKB

   set alternate to fix_BGN_2004.log additive
   set alternate on
   set century on
   set date german

   nBlockLenInKB := (OS_BEST_BLOCK_LEN)
   cZiel   := "BGN_2004_AchtungLaufzeitBisEnde2004.txt"
   nZiel   := fCreate(cZiel)

   nStart := seconds()
   cls
   ?
   ?
   ? time(),"Start"
   ?
   cQuelle := "UVCD99_04.TXT"
   nQuelle := fOpen(cQuelle)

   cBuffer     := space(nBlockLenInKB*1024)
   nBufferLen  := len(cBuffer)

   nChr26  := 0
   nChr0   := 0

   if IsNil(cQuelle) .or. IsNil(cZiel)
      ?
      ? "Fehler: Zu Quell oder Zieldatei fehlen die Angaben"
      quit
   endif

   ? "Entferne CHR(0) und CHR(26)            ",date(), "BufferLen:",len(cBuffer)
   ? "VON:                   ",cQuelle
   ? "NACH:                  ",cZiel

   cWorkBuffer     := ""
   cWorkBufferRest := ""

   do while .t.

      nBytes := fread(nQuelle,@cBuffer,nBufferLen)

      cWorkBuffer := cWorkBufferRest + left(cBuffer,nBytes)

      if empty(cWorkBuffer)
         exit                 // alles erledigt
      endif

      if chr(0) $ cWorkBuffer
         nChr0++
         cWorkBuffer := strtran(cWorkBuffer,chr(0)," ")
      endif

      if chr(26) $ cWorkBuffer
         nChr26++
         cWorkBuffer := strtran(cWorkBuffer,chr(26)," ")
      endif

      nBytes := ForceRTrim( @cWorkBuffer )         // Parameter muá per Referenz bergeben werden !

      cWorkBufferRest := substr(cWorkBuffer,nBytes +1 )  // nBytes geht bis zum letzten CRLF (inkl.)
                                                         // hier den Rest nach dem CRLF speichern.

      nBytes  := fwrite(nZiel,cWorkBuffer,nBytes)        // alle vollst„ndigen Zeilen speichern (inkl. CRLF)

   enddo

   fClose(nQuelle)

   ? "Blocks mit chr( 0) :",nChr0
   ? "Blocks mit chr(26) :",nChr26
   ?

   fClose(nZiel)

   nEnde := seconds()

   ? time(),"Ende - Dauer in Minuten:",str((nEnde-nStart)/60,7,2)
   ?

   set alternate to


return


function ForceRTrim( cWorkBuffer )
   local nCharLastCrLf, cSuchStr, aSuchLen, x

   aSuchLen := { 50 , 10, 5, 2, 1 }

   for x := 1 to len(aSuchLen)  // Alle SuchgrӇen abfragen

       cSuchStr := space(aSuchLen[x])+CRLF

       do while cSuchStr $ cWorkBuffer

          cWorkBuffer := strtran(cWorkBuffer,cSuchStr, CRLF )

       enddo

   next

   nCharLastCrLf := rat(CRLF,cWorkBuffer)

   if nCharLastCrLf = 0  // es gibt kein CRLF, dann zumindest diesen String komplett speichern
      nCharLastCrLf = len(cWorkBuffer)
   else
      nCharLastCrLf++    // Rckgabewert ist die Stelle von CR - LF ist also +1
   endif

return  nCharLastCrLf
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Wo liegt denn jetzt die max. Größe bei FReadStr() ?

Beitrag von brandelh »

Du kannst obiges Programm in alle Richtungen ausbauen um Informationen über eine Datei zu erhalten.

Wenn MED abbricht, muss die Datei rießig sein.
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Wo liegt denn jetzt die max. Größe bei FReadStr() ?

Beitrag von Manfred »

Sorry Hubert,

aber ich wahr felsenfest davon überzeugt, die Größe hier schon erwähnt zu haben. Das Alter, ich merke es immer wieder :roll:

2.013.982.108

Das ist jetzt die komplette Datei. Aber bei kleineren von der Sorte passiert es auch schon.
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: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Wo liegt denn jetzt die max. Größe bei FReadStr() ?

Beitrag von brandelh »

Hallo Manfred,

KEIN 32Bit Programm wird diese Datei im Arbeitsspeicher öffnen können, egal mit welcher Programmiersprache das erledigt wurde !

Ich habe nachgesehen, die 900 MB Datei die ich in Erinnerung hatte, kann ich zwar öffnen, aber nach dem Abspeichern bleiben nur 190 MB über.
Offensichtlich kürzt MED - wie von mir eingestellt - die Blanks am Zeilenende und spart damit Arbeitsspeicher.

Eine Datei mit 340 MB kann ich öffnen, wenn ich dann aber die Hälfte in die Zwischenablage kopieren will, kracht es.
Eine Datei mit 540 MB kracht beim Öffnen, also liegt das Maximum so zwischen 400 und 500 MB im RAM.

Rechner: 2 GB, AMD Athlon X2, Windows XP SP3
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Wo liegt denn jetzt die max. Größe bei FReadStr() ?

Beitrag von Manfred »

Prima,

dann ist das ja meine Antwort auf meine Eingangsfrage. Dann würde mich jetzt nur mal interessieren, womit ich diesen Programmabschnitt vor ein paar Monaten getestet hatte. Sicherlich haarscharf an der Grenze der machbaren Größe. Damals ist es auf keinen Fall aufgefallen. OK, alles klar. Das Problem wird anders angegangen.
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: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Wo liegt denn jetzt die max. Größe bei FReadStr() ? [ERL

Beitrag von brandelh »

So ein Problem hatte ich unter Clipper auch mal, damals gab es eine 64 KByte Beschränkung,
meine Test hatten nie soviel Text, dass es ein Problem gewesen wäre ... aber der Anwender :D
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Wo liegt denn jetzt die max. Größe bei FReadStr() ? [ERL

Beitrag von Manfred »

Ok, auch wenn ich jetzt in Gefahr laufe zu nerven.

Was spricht denn dagegen, wenn ich das in "Häppchen" unterteile und dann mit FreadStr() weiterarbeite?

Meine Idee liegt darin, dass FReadstr() ja von sich aus Dateiende erkennt und somit wenigstens am Schluß Stop sagt. Das müßte ich doch über FRead() alles selbst regeln, oder?
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: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Wo liegt denn jetzt die max. Größe bei FReadStr() ? [ERL

Beitrag von brandelh »

Hallo Manfred,

wenn du bei fReadStr() die maximale Einleselänge festlegst, tritt kein Fehler auf.
Da aber ohne ein Fehler auftritt, ist die "Zeilenlänge" riesig (über 400 MB).
Du kannst mit fReadStr() einlesen, aber für solche "unstrukturierten" Dateien ist fread()
besser geeignet und auch nicht wirklich schwer.

Siehe hierzu auch die Hilfe:
Wenn FRead() auf das Dateiende stößt, gibt die Funktion einen Wert kleiner als <nBytes> zurück.
In diesem Fall ist der Rückgabewert der Funktion FError() gleich 0.
Bei einem Fehler während des Lesevorgangs gibt FRead() ebenfalls einen Wert kleiner als <nBytes> zurück,
allerdings liefert FError() dann einen Fehlercode ungleich 0.
Du kannst hier also unterscheiden, ob das Dateiende erreicht ist, oder ob z.B. ein Datenblock auf der Festplatte/Diskette
nicht gelesen werden konnte. Außerdem wird in den Buffer wirklich alles eingelesen und du kannst mit strtran() diese
"unerwünschten" Zeichen umsetzen.

Mach wie du es willst, solange du die maximale Zeilenlänge vorgibst wird es schon stimmen.
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Wo liegt denn jetzt die max. Größe bei FReadStr() ? [ERL

Beitrag von Manfred »

Hubert,

Danke, es immer so eine Sache mit dem Lesen...... :roll:

Stimmt, ich erinnere mich wieder.
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!!
Antworten