Clipper 5 -> Xbase [ERLEDIGT]

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

Moderator: Moderatoren

Antworten
Marcel
Rookie
Rookie
Beiträge: 14
Registriert: Mi, 07. Okt 2009 7:46

Clipper 5 -> Xbase [ERLEDIGT]

Beitrag von Marcel »

Hi;

Nachdem ich gefühlt das ganze Forum und Internet 3mal komplett gelesen habe, bin ich schon kurz vor dem aufgeben;
Ich heiß Marcel (Pseudonyme sind hier wohl nicht so gerne gesehen) bin 25 und Clipper (und imho Xbase) waren lang vor meiner Zeit, leider hab ich jetzt die [IRONIE] wahnsinnig tolle Aufgabe [/IRONIE] erhalten, ein paar Programme von Clipper zu migrieren, auch noch mit gui erstellung ; imho wäre neu schreiben ja besser aber naja....

Zuerst gabs natürlich Probleme mit den Deklarationen und der Syntax; Programm ist clipper 5 ; Dann noch das Jahr 2000 Problem, ( ouh mann die erste Anwendung dich je gesehen habe bei der es das Problem tatsächlich gibt) und jetzt bin ich an einem Punkt angelangt wo ich einfach nicht weiterkomme, die PRG lässt sich compilieren aber nicht linken es gibt den Fehler ALK2102 unresolved external symbol (_GET_ ; SETFUNCTIONKEY ; DBMANAGE; SETCENTURY; _QUIT; u.v.m.) dann hab ich den Code ersteinmal reduziert und nachvollzogen bis auf den setfunctionkey fehler, es wird tatsächlich eine Funktionmit diesem Namen aufgerufen die nirgendwo aufzufinden ist, was mich aber jetzt stutzig macht ist dass das Programm in Clipper 1a compiliert, hab auch schon versucht durch include der clipper dateien das zu beheben , aber leider bisher erfolglos...

Problem ist dass ich ganz neu in der Sprache bin und nicht so recht damit klar komme, dass die meisten Infos Jahre alt sind ist auch nicht gerade erbauend.
Habt ihr eine Idee was ich falsch mache?

Vielen Dank im Voraus

Liebe Grüße

Marcel

... so und jetzt erstmal Programmiererfrühstück: Lungenbrötchen und Kaffee ;)
:coffee:





//edit: Hab's auf erledigt gesetzt , Danke
Zuletzt geändert von Marcel am Fr, 09. Okt 2009 8:51, insgesamt 1-mal geändert.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Clipper 5 -> Xbase

Beitrag von Martin Altmann »

Moin Marcel,
und herzlich willkommen hier im Forum!
Thema Lungenbrötchen: gehört zumindest nicht zu meinem Programmiererfrühstück 8)
Wahrscheinlich wurde bei Deiner Clipper-App eine Zusatzlib mit benutzt. Die musst Du dann natürlich auch für Xbase++ mit organisieren und einlinken. Oder die daraus genutzten Funktionen selber neu schreiben. Sollten es damals die Clipper-Tools gewesen sein, so gibt es das entsprechende Gegenstück auch von Alaska für Xbase++.
Wenn Du den Weg schnell und einfach gehen willst, ist sicherlich das Nutzen des Add-Ons Express++ von Roger Donnay hilfreich. Ein entsprechendes Headerfile eingebunden, die lib dazu und Du hast GUI. Ich selber nutze das Add-On jedoch nicht - da gibt es hier sicherlich mehr, die Dir was dazu schreiben können.
Aus welcher Gegend kommst Du? Es gibt einige XUGs, die sich (mehr oder weniger) regelmäßig treffen. Einfach mal dort vorbei schauen - da wird Dir dann an Deinem Laptop in Deinem Source geholfen.

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.
Marcel
Rookie
Rookie
Beiträge: 14
Registriert: Mi, 07. Okt 2009 7:46

Re: Clipper 5 -> Xbase

Beitrag von Marcel »

Hui ,
das war aber ganz schön schnell, Danke.

Ich komm aus Baden Württemberg (Karlsruhe) und bin auch recht mobil, werd mir gleich nochmal die XUG threads anschauen,
wollte aber eigentlich "selber" auf die Lösung kommen bräuchte nur so n kleinen deuter in die richtige Richtung,
was mir eben nicht einleuchtet ist dass die Funktion zwar immer wieder aufgerufen wird aber nirgendwo ein Pfad lib dll oder was auch immer vermerkt ist wo das Ding herkommen soll, in Clipper geht es einfach und in Xbase ist es nicht da, das muss doch irgendwo stehen... bin ich blind?
Nachbilden möchte ich das alles auch nicht da es schon enorm viel ist und ich dann eigentlich gleich alles richtig und neu machen könnte, Express hab ich mir mal kurz angeschaut aber ich steh mehr auf "von Hand", geht ja auch um den Lerneffekt.
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Clipper 5 -> Xbase

Beitrag von Martin Altmann »

Hallo Marcel,
da ist dann die XUG Saarland-Pfalz die richtige für Dich! Einfach in Deinem Profil hier die Aufnahme in die Gruppe beantragen und der VIP (Alaska-Deutsch für: Der Chef von det janze) Markus wird Dich dann sicherlich freischalten.
Die genutzten libs findest Du bei Clipper nicht im Source, sondern im link-Skript.

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
Armin
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 393
Registriert: Mo, 26. Sep 2005 12:09
Wohnort: 75331 Engelsbrand
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Clipper 5 -> Xbase

Beitrag von Armin »

Hallo Marcel,

herzlich willkommen :D
Ich arbeite auch in Karlsruhe und wohne in der Gegend. Ich habe schon viele Clipper Programme nach Xbase migriert und helfe Dir gerne weiter.
(_GET_ ; SETFUNCTIONKEY ; DBMANAGE; SETCENTURY; _QUIT; u.v.m.)

Wie Martin schon schrieb, steht die benutzte Bibliothek im Linkscript (war das *.lnk..)
Die von Dir erwähnten Funktionen gibt es auch so ähnlich in Xbase.

_GET_ : wird für Eingabefelder sein (wahrscheinlich ein erweitertes GET)
SETFUNCTIONKEY : set function ... to ...
SETCENTURY : set century
_QUIT : quit

Wenn Du die Funktionen nirgends finden kannst, machst Du Dir vielleicht mal einen Satz Dummyfunktionen.
z.B.
function SETFUNCTIONKEY(nKey,cFunction)
local bFunction
local cHelp
cHelp := "{||"+cFunction+"}"
bFunction := &cHelp
SetKey( nFKey,bFunction)
return bFunction

Ich hoffe mal, dass ich das jetzt richtig getippt habe. Es wird hier z.B. ein Codeblock verwendet {|| ... }. Um den String in einen Codeblock zu wandeln wird der Makrooperator & benutzt.

Viel kann man auch mit dem Preprozessor lösen.

Auf diese Art kommst Du dann zuerst mal dazu, das Clipperprogramm mit Xbase zu erstellen. Es wird danach so aussehen wie das Clipperprogramm.
Um jetzt zu GUI zu kommen kannst Du entweder eine Bibliothek wie z.B. Express++ benutzen oder Du beginnst damit nach und nach das Programm in GUI umzubauen. Oder Du trennst Verarbeitungs- und Ein/Ausgabelogik, dann kannst Du z.B. die Ein/Ausgabe über HTML machen.

_QUIT
Folgendes steht in der std.ch, d.h. wenn im Prog QUIT geschrieben steht, wird es zu _quit umgesetzt. Eigentlich müsste Xbase _quit kennen
#command QUIT [<exp>] => _quit(<exp>)

Grüße, Armin
Marcel
Rookie
Rookie
Beiträge: 14
Registriert: Mi, 07. Okt 2009 7:46

Re: Clipper 5 -> Xbase

Beitrag von Marcel »

Wow ich bin begeistert. soviel kompetente schnelle Hilfe :D :shock:
also hab noch ein bisschen geforscht gesucht und leute genervt , habe jetzt die .obj dateien von denen ich annehme dass sie die entsprechenden funktionen enthalten, kann diese aber nicht linken (valid or corrupt) von hand kann ich den maschienen code nicht editieren , google spuckt hauptsächlich dbase links aus ( auch mit "xbase" obj ) ausserdem habe ich da noch fmt und fmo dateien... scheinen sowas wie die Dosfenster zu sein , kann ich die vorerst einfach mit linken?

naja jetzt hab ich ja ne menge neue informationen mit denen ich mich erstmal weiter beschäftigen kann....
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9357
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Clipper 5 -> Xbase

Beitrag von Tom »

Xbase++ kann keine 16-Bit-Clipper-OBJ-Files linken. Du musst den Quellcode suchen und neu kompilieren. Wenn er nicht vorliegt, musst Du versuchen, herauszubekommen, was die entsprechenden Funktionen tun - und es nachahmen. Dafür hilft auch der hier gemachte Vorschlag, sie zunächst einmal durch eigene Pseudofunktionen zu überlagern.
Herzlich,
Tom
Marcel
Rookie
Rookie
Beiträge: 14
Registriert: Mi, 07. Okt 2009 7:46

Re: Clipper 5 -> Xbase

Beitrag von Marcel »

Die Pseudofunktionen waren eine sehr gute Idee hab jetzt schon ein halb funktionierendes Program , ach ist das schön sich mal zur abwechslung nicht von einem Fehler zum nächsten zu hangeln,
falls jemand die gleichen Probleme hat mein Tipp: VALKYRIE , habe gerade die Demo runtergeladen und ist ein clipper decompiler. bringt auch eine menge brauchbare infos für die migration besonders am anfang wenn noch unklar ist was alles woher kommt und was es macht.

Liebe Grüße

- Marcel
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9357
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 101 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Clipper 5 -> Xbase

Beitrag von Tom »

Hallo, Marcel.

Ja, Valkyrie ist ein gutes Tool, wenn man zum Beispiel versehentlich Clipper-Quellcode gelöscht hat. Das Ergebnis der Dekompilation kommt dem Original sehr nahe. Aber wenn andere 16-Bit-Libs oder Objektdateien eingebunden sind, hilft es an dieser Stelle auch nicht weiter.
Herzlich,
Tom
Antworten