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

MemoRead() <-> LowLevel Funktionen [ERLEDIGT]

Beitrag von Manfred »

Moin,

ich glaube ich falle um. Ich habe mir gerade aus einem dummen Zufall heraus die MemoRead() usw. Funktionen angesehen. Ich vermute einmal, ich habe die vom Namen her die ganze Zeit falsch eingestuft. Damit lese ich Inhalte von Textdateien ein, verarbeite sie und speichere sie, alles nur wesentlich komfortabler als wenn ich das mit den Fopen() usw. Funktionen mache?

Was habe ich mir denn die ganze Zeit für eine Arbeit gemacht?

Na gut, kommen wir zu meinem Problem:

Ich habe eine Textdatei, die recht groß werden kann. Am Anfang dieser Textdatei stehen immer 2 Zeilen, die nicht übernommen werden dürfen, bzw.die die weitere Verarbeitung mit der DELDBE durcheinanderwürfeln. Also müssen die raus.
Jetzt wollte ich eigentlich die Textdatei auf LowLevel Format öffnen, diese besagten 2 Zeilen entfernen, dann wieder zurückschreiben, schließen und dann mit der DELDBE Engine öffnen um dann Satz für Satz mit Skip diese zu durchlaufen.
Ich tue mich aber etwas schwer damit, diese beiden Zeilen mit einer vernünftigen Lösung zu entfernen.
Zuletzt geändert von Manfred am Mo, 24. Nov 2008 14:49, insgesamt 1-mal geändert.
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
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16517
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
wozu dieser Aufwand?
Öffne sie mit DELDBE, mache ein Go Top und danach ein DbSkip( 2 ) und gut ist.
Mache ich auch immer so (nur das bei mir ein skip reicht, da es nur eine Zeile am Anfang ist).
Oder unterscheiden sich Deine ersten beiden Zeilen im Aufbau von den restlichen (unterschiedliche Spaltenzahl)?

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
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:

Beitrag von brandelh »

Hallo Manfred,

im Prinzip ja. Aber es ist keine LowLevel Funktion.
Memoread ließt alles :!: wandelt aber laut support je nach Einstellung und Umgebung den Text um (OEM / ANSI - wobei ich dies bei mir noch nicht feststellen konnte). Solange du also nur Texte hast ist das alles OK. Auch CHR(26) etc. wird eingelesen.

Nur wenn du z.B. EXE oder ZIP Dateien einlesen willst - um z.B. eine Seriennummer einzubrennen, dann musst du das mit den LowLevel Funktionen machen.

Wenn die Textdateien aber sehr groß werden (so ab 1000 Zeilen) wird memoline() immer langsamer. Hier ist es dann besser sich die Zeilenanfänge und Zeilenende mit AT zu suchen und nicht mehr den String umzukopieren. Da gab es einen Artikel über schnelle Stringvererbeitung - ich meine der steht immer noch auf der Alaska Site.
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

Beitrag von Manfred »

Hi Martin,

jetzt hatte ich schon eine komplette Erklärung geschrieben, mußte sie aber wieder löschen, weil ich Deine Frage zu spät gelesen hatte :roll: . Ja, die ersten beiden Zeilen bestehen nur aus einer "Spalte" und danach geht es mit recht vielen Spalten weiter und das bekommt die DELDBE dann nicht mehr mit und macht eben eine draus.

@Hubert,

ich möchte nur eine Textdatei einlesen, die Tabelle mit vielen Spalten in Textform enthält. Aber wie gesagt, vorher die beiden Überschriften entfernen. Ich bin gerade dabei ein Experiment damit zu starten um zu sehen, ob ich kaperie, worum es da jetzt geht.
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:

Beitrag von brandelh »

Hallo Manfred,

ich hatte den 2. Teil deiner Mail übersehen ...

Code: Alles auswählen

#define CRLF chr(13)+chr(10)

cTxt := memoread(cDatei)
nStart := at(CRLF,cTxt) // Ende der ersten Zeile
if nStart > 0
   nStart += 2 // nun am Anfang der 2. Zeile
   nStart := at(CRLF,cTxt,nStart) // Ende der zweiten Zeile
   if nStart > 0
      nStart += 2 // nun Anfang der 3. Zeile
   endif
endif 

if nStart=0 -> fehler ???

nZiel := fcreate(....)
FWrite( nZiel, substr(cTxt,nStart )  // eventuell auf fehler prüfen...
fclose(nZiel)
Ein Schönheitsfehler hat dieser Code, eine mögliche Umwandlung durch memoread() wird so nicht zurückgeschrieben. Andererseits wenn man memowrit() verwendet, wird immer ein chr(26) angehängt.

In der Wissensbasis habe ich Funktionen hinterlegt die eine Datei ohne Umwandlung lesen und schreiben ...
Die 2. Zeile beginnt nach dem CRLF der ersten Zeile ... so muss man sich vorhangeln, wobei der 3. Parameter von AT() hier sehr wichtig ist. Unter Clipper musste man den Anfang immer abschneiden, was sehr viel Speicherplatz (intern 2*Länge des Strings um ein Zeichen abzuschneiden !) verbraucht hat. Umkopieren von Strings dauert relativ lange, daher ist es besser einfach die Start- und Endpositionen zu ermitteln.

PS: so die vertauschten Werte von AT() habe ich richtig gestellt.
Bei PowerBasic ist es genau andersherum ... sorry nochmal.
Zuletzt geändert von brandelh am Mo, 29. Okt 2007 16:10, insgesamt 2-mal geändert.
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

Beitrag von Manfred »

Hi Hubert,

danke auch hier mal wieder für den Hinweis an den Kappeskopp. Das was in der Wissenbasis steht, hatte ich damals auch gelesen, aber mal wieder nicht verstanden, was der liebe Onkel mir damit sagen wollte. Jetzt wo ich eine Anwendung dafür habe, (eigentlich hatte ich die schon immer gehabt) verstehe ich worum es geht. Und Dank Wolfgang, werde ich jetzt auch die Funktion FileStr() und StrFile() in den Tools ausprobieren.

Manoman, wie schwer kann man sich das Leben eigentlich noch machen? Mal sehen, ob das wirklich so klappt, wie ich es haben muß.
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:

Beitrag von brandelh »

Hi,

wenn du die Tools hast und die 2 DLL nicht stören, sind die Funktionen in den Tools natürlich schneller als meine Nachbauten (nur vom Namen, Syntax und Wirkung ;-) ) in Xbase++ Code.
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

Beitrag von Manfred »

Hi Hubert,

das ist prima:

1) habe ich die Tools
2) sind die eh mit eingebunden
3) wenn es auch noch schneller geht damit--- na denn Prost
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

Beitrag von Manfred »

Hi Hubert,

ich muß mal kurz eine Frage stellen: Was machst Du mit Deinem

at(cTxt,CRLF)

in dem Beispiel oben???
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
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Manfred,

damit stellt er die Position des Zeilenumbruches CRLF in Text ctext fest. Um von da einzulesen.

Jan
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 Jan,

wenn ich das so richtig lese, dann würde ich sagen "Nö"

Ich habe es gerade ausprobiert.

Es muß so sein:

nAt := AT(CHR(10),cText)

Beim CHR(13) + CHR(10) wird vor dem letzten Zeichen aufgehört, bei CHR(13) und das letzte Zeichen wird nicht berücksichtigt.

Aber ich denke mal, Hubert hat das mir zuliebe schnell aus der Hüfte geschossen und vertauscht UND CRLF eingebaut.
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:

Beitrag von brandelh »

Hallo Manfred,

schau mal auf diese Zeile

#define CRLF chr(13)+chr(10)

damit ich im späteren Text nicht immer chr(13)+chr(10) schreiben muss, definiere ich mir CRLF
-> diese beide Zeichen bewirken einen Waagenrücklauf und Zeilenvorschub
(auf englisch carriage return line feed)

Und genau diese Zeichen stehen im String um eine neue Zeile einzuleiten bzw. die alte zu beenden (sie gehören weder zur alten noch zur neuen Zeile, daher werden diese ausgestanzt).

AT() sucht das erste Auftreten eines Stringteils in einem anderen, wobei man den Startpunkt (3. Parameter) festlegen kann.
Gruß
Hubert
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:

Beitrag von brandelh »

Manfred hat geschrieben:Hi Jan,

wenn ich das so richtig lese, dann würde ich sagen "Nö"

Ich habe es gerade ausprobiert.

Es muß so sein:

nAt := AT(CHR(10),cText)

Beim CHR(13) + CHR(10) wird vor dem letzten Zeichen aufgehört, bei CHR(13) und das letzte Zeichen wird nicht berücksichtigt.

Aber ich denke mal, Hubert hat das mir zuliebe schnell aus der Hüfte geschossen und vertauscht UND CRLF eingebaut.
So aus der Hüfte geschossen habe ich mal wieder die Parameterreihenfolge von AT verwechselt:

at( CRLF, cTxt, ...) muss es heißen.
Ich verbessere das mal oben im Text.

CHR(10) reicht aber bei PC Textdateien nicht aus, außer man zieht mehr ab, da es nun mal ein CRLF ist, das die Zeilen trennt. ABER wenn du UNIX (Linux) Dateien hast, dann gibt es dort nur LF also chr(10) - da heißt es etwas experimentieren.
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

Beitrag von Manfred »

Hi Hubert,

die Datei kommt von Amazon und hat laut HExeditor am Zeilenende 2 Zeichen stehen und zwar 0D und 0A.

Wenn ich Deinen Vorschlag mit CRLF nutze, dann wird 0A nicht erkannt.
Wenn ich aber nur CHR(10) nehme, dann geht es bis zum Ende.

Da wir aber gerade schon dabei sind, AT() sucht ja nur 1x, da ich aber weiß, das es immer (nur) 2 Zeilen sind, muß ich AT() 2x aufrufen. Ich suche jetzt schon verzweifelt in den Handbüchern. Gibt es nicht bei den ToolsIII oder direkt bei Xbase++ eine andere Funktion, bei der man angeben kann, wie oft nacheinander gezählt werden soll? Ich meine irgendwas dsbzgl. im Kopf zu haben, bin mir aber überhaupt nicht sicher, ob das nicht wieder eine Fata Morgana ist/war.

PS: Stopp, ich habe es gefunden. Ich denke AtNum() ist mein Freund.
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:

Beitrag von brandelh »

Hallo Manfred,

schau mal oben nach, ich suche 2x mit AT, nämlich in der 2. Zeile nach dem Ende. ATNUM() genau, das geht auch:

AtNum(CRLF,cTxt,2) sollte genau das 2. CR Zeichen aussuchen.
Dann muss man zu diesem Wert noch 2 dazuzählen und du bist beim ersten Zeichen des neuen Satzes.
Gruß
Hubert
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:

Beitrag von brandelh »

Manfred hat geschrieben:...
die Datei kommt von Amazon und hat laut HExeditor am Zeilenende 2 Zeichen stehen und zwar 0D und 0A.
...
schön, also eine normale PC Datei ... 0x0A = chr(10) = LF
Manfred hat geschrieben:...
Wenn ich Deinen Vorschlag mit CRLF nutze, dann wird 0A nicht erkannt.
Wenn ich aber nur CHR(10) nehme, dann geht es bis zum Ende.
...
zeig doch mal was du da machst ?

so steht das im RAM:
cTXT := "Dies ist ein TestCRLF2. ZeileCRLF3.Zeile"
? at(CRLF,cTXT) -> 18 -> 18. Zeichen des Strings ist CR
+2 damit wir das Zeichen nach dem CRLF haben.
dann ist man in der 2. Zeile auf '2'
Von dort startet man mit at(CRLF,cTxt,nStart) (nStart=20, CR zählt ein Zeichen) das nächste CR ist schon ein Zeichen nach dem Ende der 2. Zeile und 2 vor dem Anfang der 3. Zeile.

ALLERDINGS gilt das nicht für die low level Dateioperationen, dort fängt ja der Index mit 0 an !
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

Beitrag von Manfred »

Hi Hubert,

ich stricke gerade noch, aber wenn es fertig ist, dann stelle ich es hier rein. Es muß noch etwas anderes berücksichtigt werden, daran knabbere ich gerade noch.....

Tirili, der Tag war/ist gut...
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

Beitrag von Manfred »

Blödsinn, was erzähle ich hier für einen Unfug. Die Datei wird auf einem Windowsrechner erzeugt mit einem Windowsprogramm.
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

Beitrag von Manfred »

So, hier ist es. Aber es klappt noch nicht ganz so, wie ich es brauche.

Code: Alles auswählen

#include "deldbe.ch"
#include "Fileio.ch"
#pragma Library("XBTBASE1.LIB")
#pragma Library("XBTBASE2.LIB")
PROCEDURE main()
          cText    := FileStr("text.txt")//gesamten Text einlesen
          nStart   := AtNum(CHR(10),cText,2) // nach 2 CHR(10) suchen

          cText   := FileStr("text.txt",,nStart)// ab der 2.Zeile nochmal lesen
          StrFile(cText,"text2.txt") // ohne die ersten beiden Zeilen wieder wegschreiben
          DBEINFO(COMPONENT_DATA, DELDBE_FIELD_TOKEN,";") // Semikolon als Trennzeichen zwischen den Spalten
          DBEINFO(COMPONENT_DATA, DELDBE_DELIMITER_TOKEN, Chr(0) )//
          DBEINFO(COMPONENT_DATA, DELDBE_MAX_BUFFERSIZE, 128*1024)
          DBEINFO(COMPONENT_DATA, DELDBE_DECIMAL_TOKEN, ",") // Währungen werden mit Komma getrennt

          DBESETDEFAULT("deldbe")
          CLS
          Dbusearea(.T.,"DELDBE","text2",,.F.)
          browse()
          RETURN
Das Trenzeichen Semikolon wird nicht erkannt. Es gibt also nur eine einzige Spalte und nicht mehrere, wie gewünscht. Bei einer anderen Textdatei ist ein TAB als Trenner drin, das klappt prima. Da habe ich ";" gegen CHR(9) ausgetauscht.
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:

Beitrag von brandelh »

Manfred hat geschrieben:...

Code: Alles auswählen

 cText    := FileStr("text.txt")//gesamten Text einlesen
          nStart   := AtNum(CHR(10),cText,2) // nach 2 CHR(10) suchen
          cText   := FileStr("text.txt",,nStart)// ab der 2.Zeile nochmal lesen
Hallo Manfred,

da haben wir doch gleich den Übeltäter ;-)

bei den XBToolsIII ist beim 3. Parameter nicht das 1. bzw. 3. Zeichen gemeint, sondern der Offset nach dem 1. Zeichen. Man muss also 0 übergeben um das erste Zeichen zu erhalten, deshalb warst du mit meiner CRLF Abfrage genau ein Zeichen daneben !

Mit deiner Abfrage nStart aus LF als Offset dürfte das ja dann stimmen, aber du lädst die Datei 2x in den Speicher, das ist recht unnötig !
Dafür (mit meiner Suchweise) hat man SubStr(cTxt,nStart) allerdings wie gesagt muss man dann so rechnen wie ich das gemacht habe.

Den dann gekürzten String schreibt man in die Datei (nach eventuellen anderen Tauschaktionen !)
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

Beitrag von Manfred »

Hi Hubert,

klar ich Doof. Ich bin doch zum Verrecken nicht auf Substr() gekommen. Wald Bäume... Mehr sage ich nicht..
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

Beitrag von Manfred »

OK,

bei Substr() einen dabeitun und es klappt.

Aber wieso wird bei der nachfolgenden Aktion, das Semikolon beim Feldtrenner nicht anerkannt? Das verstehe ich nicht.
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
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Manfred,

mach den Rechner aus. Ess in Ruhe eine Kleinigkeit. Danach geh eine halbe Stunde raus zum spazieren. Dann komm wieder frisch nach Hause und mach den Rechner wieder an. Du wirst sehen, Dein Blickwinkel wird ein ganz anderer sein. Ruhig, entspannt, nicht mehr im Kreis drehend.

Jan
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 »

Jan

das habe ich heute schon hinter mir. Das Problem mit den Feldtrennern schiebe ich schon seit Freitag vor mir her. Ich dachte es läge nur an den Überschriften. Die sind aber jetzt weg und es klappt trotzdem nicht. Aber durch den heutigen Thread hier habe ich gleich wieder ein paar andere Probleme gelöst und werde die erstmal bearbeiten.

Ich dachte doch die ganze Zeit, Memoxxx() wäre nur für Memofelder. Tja, wie dumm muß man eigentlich sein, eine Anleitung so dermaßen falsch zu lesen? Und das über Jahre hinweg. Ärgerlich.
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
Jan
Marvin
Marvin
Beiträge: 14655
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Manfred,

ich versteh Dich aus eigener Erfahrung nur zu gut.

Jan
Antworten