Nexus-Office Migration CL5.2 nach XBase

Auf dem Weg von Clipper, FoxPro u.ä. nach Xbase++

Moderator: Moderatoren

Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16511
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Rolf,
ja - Xbase++ ist in wenigen Dingen strikter als Clipper.
Das RETURN ohne Rückgabewert bei einer FUNCTION gehört z.B. dazu.

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.
FlashNash
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 101
Registriert: Di, 22. Jul 2008 15:39
Wohnort: RE - NRW
Kontaktdaten:

Beitrag von FlashNash »

Okay Martin, ich werde über das WE mal noch das Eine/Andere testen ... mal sehen wie weit ich komme. Das wichtigste ist ja zuerst, dass XBase meine alten .PRG Files fehlerfrei compilliert. Danach sieht man dann weiter. :wink:

Ich werde euch alle NOCH MÄCHTIG AUF DEN SENKEL GEHEN mit meinen Fragen. :D
Gruß Rolf
Admin of www.Ruhrpottboard.de
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21189
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Rolf,

mach Dir mal keinen Kopp, wegen vieler und evtl. blöder Fragen.

Schau Dir meine Beitragszahl an, ziehe 10% ab (Witze erzählt) und dann weißt Du wer hier viele und auch manchmal blöde Fragen stellt. :lol:

Also, Du bist auf einem weiten Weg dahin und ich denke einmal, es wird sicherlich noch eine lange Zeit dauern, bis Du mich und ein paar andere hier eingeholt hast. Und mein Pool an blöden Fragen ist noch lange nicht erschöpft, das gebe ich Dir schriftlich.

Und vor allen Dingen: Bisher hat sich keiner (zumindest nicht öffentlich) über meine Fragerei beschwert. Also, immer heraus damit. Wir lernen alle davon.
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: 14653
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Es gibt da irgendwo ein Papier von Frank++, in dem er den Umbau der DBU nach Xbase++ beschreibt. Und anhand dessen sehr sehr gut erklärt, was dabei alles (eben nicht sehr viel) umgebaut werden und beachtet werden muß. Ich schau mal heute nachmittag, ob ich das irgendwo ausgraben kann, und stell dann hier den Link rein.

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

Beitrag von Manfred »

Hi Jan,

zu spät:

http://www.alaska-software.com/scripts/ ... IB_SECT=40

Getting started.....

und andere
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: 14653
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Manfred,

gut gemeint. Aber nicht das, was ich meinte. Frank ++ (Großheinrich) hat da mal was geschrieben, wie man das Clipper-DBU auf Xbase++ umschreibt. Anhand dieses Beispiels geht er genau durch, was alles in Xbase++ anders ist als in Clipper, und was man da ändern muß, um ein "altes" Clipper-Programm unter Xbase++ ans Laufen zu bekommen.

Und das steht leider nicht in dieser Liste drin.

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

Beitrag von Manfred »

Hi Jan,

bist Du froh, wenn Du Unsinn erzählen kannst? :roll:

Seite 21 geht es los
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: 14653
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Hallo Manfred,

aber gewonnen hast Du deswegen noch lange nicht! Wenn überhaupt, dann Gleichstand. Denn ich meinte ein Dokument von Frank, in dem es um nichts anderes als diese Geschichte ging. Daß das auch in dem "Getting Started" drinsteht, war mir nicht bewusst.

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

Beitrag von Manfred »

Hi Jan,

na gut. Obwohl ich sehr überrascht bin, ich kenne nur das und habe anhand dieses PDF meine DBU damals umgebaut.

Wenn Du noch mehr hast, dann sage bitte was es sein soll. Es würde auch mich noch interessieren.

Obwohl ich mir ziemlich sicher bin, dass es nur dieses eine Dokument gibt/gab. Aber, man hat schon Pferde......

PS: Nö, jetzt muß ich mal zurückrudern und Dir Recht geben. Ich habe nochmals nachgesehen. Die Anleitung scheint mir doch recht kurz zu sein. Und in meiner Erinerung war auch eine wesentlich länger. Aber verflixt, ich hatte die auch und finde die nicht mehr.
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: 16511
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Rolf,
was auch noch mit ein Grund sien kann:
Unter Clipper ging das mit den Prozeduren und Funktionen ja z.B. so:

Code: Alles auswählen

PROCEDURE a
PARAMETERS b, c, d
...
RETURN
...
PROCEDURE b
...
RETURN
Das geht unter Xbase++ nicht! Da muss das so heißen:

Code: Alles auswählen

PROCEDURE a( b, c, d )
...
RETURN
...
PROCEDURE b()
...
RETURN
Und auch der Aufruf ändert sich ggf. Unter Clipper ging ja folgendes:

Code: Alles auswählen

DO a WITH "bla", .T., 1
DO b
Unter Xbase++ dagegen:
a( "bla", .T., 1 )
b()
Und auch eine Funktion muß einen Wert zurückliefern! Wenn nicht, mache eine PROCEDURE drauß.

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

Beitrag von Jan »

Martin hat geschrieben:Und auch eine Funktion muß einen Wert zurückliefern! Wenn nicht, mache eine PROCEDURE drauß
Weil mir das zu blöde ist, immer nach Function und Procedure zu unterscheiden (und weil sich manchmal bei mir im Laufe der Entwicklung des Programmes das auch ändern kann) benutze ich ausschließlich Funktions. Und wenn es denn keine Rückgabe gibt, nehme ich einfach RETURN NIL.

Jan
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16511
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Jan,
das geht so lange gut, bis in einer neueren Version ein strikterer Parser zum Einsatz kommt und der meckert, weil Du die Rückgabe der Funktion nicht auffängst - oder rufst Du Deine NIL-zurückgebende Funktion auch mit a := nix() auf? :wink:
Aber egal - es gibt sicherlich auch das andere Extrem: Leute, die grundsätzlich nur PROCEDUREs nutzen - und wenn eine Rückgabe gebraucht wird, den Parameter halt per Referenz übergeben :roll:
Und jetzt können sich wieder die Profiler austoben (aber bitte in einem neuen Thread, das schweift hier ab):
Was ist schneller:
  • Eine Prozedur die nichts zurück gibt oder eine Funktion, die NIL zurückgibt (aber sonst natürlich das gleiche macht)? Ich tippe auf Prozedur.
  • Eine Funktion, die einen Wert zurück gibt oder eine Prozedur, die den zu ändernden Wert per Referenz übergeben bekommt (aber sonst natürlich das gleiche macht)? Ich tippe auch hier auf Prozedur.
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
Jan
Marvin
Marvin
Beiträge: 14653
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Hallo Martin,

immer diese philosophischen Diskussionen unter logisch denkenden Entwicklern :lol:
oder rufst Du Deine NIL-zurückgebende Funktion auch mit a := nix() auf?
Nö. Sollte ich? :lol:
Was ist schneller:
Hmmm. Ist ein Argument. Wer schreibt jetzt eine Schleife, die 100.000 mal eine Function bzw. eine Procedure aufruft und das mal misst?

Aber jetzt mal ehrlich (wär doch ein nettes Diskussionsthema für den 23. in Herford, oder?): Selbst wenn das ein paar Millisekunden Zeitersparnis gibt - wer von uns ruft denn dermaßen exzessiv Funktionen auf, daß sich dadurch das gesamte Programm (merklich) verlangsamen würde?

Von daher denke ich, daß jeder das auf seine Art machen kann. Wenn es geht, und keine Knoten in den Code macht, ist das doch praktisch gesehen völlig egal. Oder?

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

Beitrag von Manfred »

Hi ihr 2

ich denke mal, da wird sicherlich Hubert demnächst eine Abhandlung drüber halten, wollen wir wetten? :lol:
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: 14653
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

Sei doch froh daß es hier jemanden gibt, der solche Punkte als Herausforderung sieht und sich da reinvertieft. Da sind ja teilweise schon ganz interessante Ergebnisse rausgekommen.

Wo wir gerade dabei sind: Habt Ihr die Diskussion in der Newsgroup gelesen? Wo Hannes mit einigen anderen die Geschwindigkeit von Xbase++ mit anderen Sprachen vergleicht? Ist in dem ActiveX-Thread unter AutomationObject:dynamicCast() zu finden. Wo Paul Hill eine Geschwindigkeitsbehauptung aufstellt und sie auch belegt. Hannes aber durch eine Codeoptimierung alles ins Gegenteil verkehrt, und siehe da: Xbase++ ist um Längen schneller als alle anderen! Den Code (und die Erklärung dazu!) von Hannes werd ich mir beiseite legen, da kann man sicher noch Nutzen draus ziehen.

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

Beitrag von Manfred »

Hi Jan,

ich bin stinkend wütend, das hier immer Leute sind, die durch interessante Tests und gute Tipps mir und den anderen helfen. Das finde ich unerhört.
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: 14653
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Beitrag von Jan »

... und ich dachte schon, Du wärst nur stinkig auf mich mit meinen gut gemeinten und ständig am Thema vorbei gehenden Ratschlägen :? Gut zu wissen daß ich nun doch nicht der einzige bin 8)

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

Beitrag von Manfred »

Hi Jan,

stinkig auf Dich? Ach watt. Und außerdem solltest Du in dem Zusammenhang das Wort ständig streichen. So schlimm ist es nun auch wieder nicht. Wenn Du nicht wärest, wen sollte ich denn dann ärgern? :lol:

Hubert? Ich werde mich hüten. Martin? Der läßt alles an sich abperlen. Bleibt doch sonst keiner mehr übrig.

Aber ich merke schon, wir blähen den Thread hier unnötig auf und bevor es Haue gibt....
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: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Martin Altmann hat geschrieben:Hallo Jan,
das geht so lange gut, bis in einer neueren Version ein strikterer Parser zum Einsatz kommt und der meckert, weil Du die Rückgabe der Funktion nicht auffängst - oder rufst Du Deine NIL-zurückgebende Funktion auch mit a := nix() auf? :wink:
meinst du das im Ernst ? ;-)

eine

Code: Alles auswählen

function A()
Return NIL
ist genauso wie eine

Code: Alles auswählen

procedure A()
Return
ich vermute mal ganz stark, dass Xbase++ intern eine procedure auf eine VOID function umsetzt !
Rückgabewerte kann man immer getrost ignorieren, wenn man sie nicht braucht und das wird sich auch nicht ändern, sonst würde man zig Zeilen alten Codes brechen.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

im reinen Quellcode mit "normalen" Befehlen (Schleifen etc.) ist Xbase++ ziemlich langsam, aber es gibt sehr mächtige Befehle wie DBEVAL(), ASORT() etc. diese sind wesentlich schneller wie alles was ich mit PowerBasic selbst geschrieben habe.
Gruß
Hubert
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21189
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi,

also nochmals für alle zum Mitschreiben. Die For Next Schleife an sich ist langsam, nicht das was dazwischen evtl. abgefrühstückt wird!?
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: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo Manfred,

das natürlich auch, außer man kann einen "SuperBefehl / Funktion" benutzen, die andere nicht haben und selbst programmieren müssen.
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

Beitrag von AUGE_OHR »

hi,
Martin Altmann hat geschrieben: was auch noch mit ein Grund sien kann:
Unter Clipper ging das mit den Prozeduren und Funktionen ja z.B. so:

Code: Alles auswählen

PROCEDURE a
PARAMETERS b, c, d
...
RETURN
...
PROCEDURE b
...
RETURN
Das geht unter Xbase++ nicht! Da muss das so heißen:

Code: Alles auswählen

PROCEDURE a( b, c, d )
...
RETURN
...
PROCEDURE b()
...
RETURN
Ergänzung : Wenn Xbase++ z.Z. deinen Code wegen "PARAMETER" an-
meckern sollte dann liegt es daran das PARAMETER unter Xbase++ eine
PRIVATE ist. Wenn du also LOCAL verwendest und PARAMETER "davor"
kommt mag das Xbase++ nicht.

Wenn du das so wie Martin vorgeschlagen hat umschreibst dann denke
daran das die übergebenen "Parameter" dann LOCAL sind und ob sich
das mit deinem Code verträgt oder du die "Parameter" per Referenz
übergibst.
gruss by OHR
Jimmy
FlashNash
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 101
Registriert: Di, 22. Jul 2008 15:39
Wohnort: RE - NRW
Kontaktdaten:

Beitrag von FlashNash »

Thx @Alle für die erneuten Hinweise. Morgen habe ich wieder etwas freie Zeit und dann werde ich das mit den Return-Errors mal angehen.

Sind zwar nur ein paar wenige (ca. 4...5) aber die müssen ja weg. Mein Ziel ist es, den alten Clipper Code zuerst einmal fehlerfrei mit XBase compillieren zu können. Was danach der Linklauf an Errors liefert, na das werde ich dann sehen. :roll:

Wünsche allen einen coolen Wochenstart. 8)
Gruß Rolf
Admin of www.Ruhrpottboard.de
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

Beitrag von AUGE_OHR »

hi,

solltest du an irgend einer Stelle deinen Cl*pper Code nicht ändern
wollen/können/dürfen dann kannst du die Konstante "__XPP__" benutzen.

Code: Alles auswählen

#IFDEF __XPP__
   // Xbase++ Code
#ELSE 
   // Cl*pper Code
#ENDIF
gruss by OHR
Jimmy
Antworten