1 / 53

Konvertierung FPW 2.6->VFP

Konvertierung FPW 2.6->VFP. Konvertierung von FoxPro / Windows Anwendungen nach Microsoft Visual FoxPro. Diese Schulung dient der Übersicht über die Konvertierungsarten und -möglichkeiten von Applikationen unter FoxPro/Windows nach Microsoft Visual FoxPro. Themenübersicht.

Download Presentation

Konvertierung FPW 2.6->VFP

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Konvertierung FPW 2.6->VFP Konvertierung von FoxPro / Windows Anwendungen nachMicrosoft Visual FoxPro

  2. Diese Schulung dient der Übersicht über die Konvertierungsarten und -möglichkeiten von Applikationen unter FoxPro/Windows nach Microsoft Visual FoxPro

  3. Themenübersicht • Fallstudie aus der Praxis • Vorüberlegungen • Konvertierungsansätze • Minimalistische Konvertierung • Hybrider Ansatz • Konvertierung Berichte • Konvertierungsassistent • Funktionale Konvertierung • Maskeneigenschaften • Nachbearbeitung von Masken • FPW-Wrapper-Klassen

  4. Fallstudie aus der Praxis Vollständige Konvertierung der FPD-Software „Account View“ nach Microsoft Visual FoxPro

  5. Account View Anwendung • Buchhaltungssoftware in FPD 2.6 • 4000 Kunden in 3 Ländern • 70 % haben Netzwerklizenzen • Beispiele Anwender: • Royal Dutch Concertgebouw • Pulitzer Hotel (350 Betten) • Den Hague Police Region • PTT Catering (360 Gebäude) • Allianz Europa (SAP + AV)

  6. Konvertierungs-Ziele 1. Zuverlässigkeit 2. Zuverlässigkeit 3. Zuverlässigkeit 4. Anforderungen Windows95 Logo 5. Möglichst gleiche Geschwindigkeit bei der Datenerfassung wie FP/DOS 6. Erhaltung der Flexibilität für VARs

  7. Konvertierungs-Planung • Die Wirklichkeit ist anders als die Demos • In Wirklichkeit wurde die komplexe Funktionalität langsam und inkrementell entwickelt • Wie lange dauerte es (wirklich) bis die Anwendung auf dem heutigen Stand war? • Wie hoch schätzt man Zeit und Kosten für Migration • Zuerst kalkulieren!

  8. Implikationen • Kosten von ca. DM 200,000 (mind.!) • Kaufen aller verfügb. Bücher zu VFP • MCP-Test für alle Teammitglieder • Kaufen sämtlicher auch nur ansatzweise sinnvoller Werkzeuge • Kein Geld an der Vorbereitung(szeit) sparen! • Unterstützung der GL einholen

  9. Vorschläge zur Vorgehensweise • Selbst erstellen oder Kauf eines fertigen Applikations-Frameworks mit Basisklassen und Fertigobjekten • Testweise manuelle Erstellung von einigen Masken, Berichten und Menüs • Probeweise Konvertierung bestehender Dateien

  10. Einsatz von Frameworks • Notwendig und nicht migrierbar • Einige Möglichkeiten: • Codebook 3 (Flash - Griver) • X3 Framework (MaxTech - Drew Speedie) • VFP Frame (ABL) • Negativ: • Sind notwendigerweise sehr komplex • Werden hauptsächlich von Firmen verkauft, deren Schwerpunkt im Bereich Beratung, Coaching und Support liegt

  11. Konvertierungsarbeit • Masken • Functional • Visual • Custom • Menüs • Berichte (Problem: breite Berichte) • Datenbanken • Datenbankcontainer, Private Datasessions, keine Views, keine Rules/Trigger

  12. Unterstützung 1. Online Hilfe 2. Online Dokumentation 3. „Mastering Visual FoxPro“-CD (Migration CD) 4. Knowledge base auf den TechNet-CDs 5. VFOX/dFPUG-Forum auf Compuserve! 6. Microsoft FoxPro Site im Internet 7. Bücher über Visual FoxPro 8. Alte Ausgaben des „FoxPro Advisor“ (ggf. CD) 9. Bekannte, Eltern und Verwandte 10. Microsoft Support

  13. HINWEIS: Es war FOXPRO / DOS !!! Die positive Seite: 75% der Applikation konnten unverändert übernommen werden VFP ist das Ticket zu „state-of-the-art“-Anwendugnen bis ins nächste Jahrhundert! Zusammenfassung Fallstudie

  14. Vorüberlegungen Grundsatzüberlegungen zur Konvertierung nachMicrosoft Visual FoxPro

  15. Visual FoxPro • „State of the art“-Datenbank-Applikationen • 32bit-Windows-Unterstützung • Client/Server-Connectivity • Objektorientierung • Umfangreiches Debugging • Multi-Tier/Internet-Applikationen

  16. Konvertieren vs. Neuschreiben • Die bestehende Anwendung • hat mehrere Versionen durchlaufen? • ist stabil? • benötigt keine neue Funktionalität? • läuft nicht auf neuen Betriebssystemen? • Die Entwickler haben • die Möglichkeit, OOP kennenzuleren oder • keine Zeit für neue Entwicklungsmethoden?

  17. Grundsatzüberlegungen (1) • Wurden die Werkzeuge verwendet? • Falls nein: minimalistisch oder neu schreiben • Werden FLLs eingesetzt? • Neu kompilieren unter 32Bit notwendig • Werden Third-Party-Tools eingesetzt? • Funktionalität evtl. in VFP bereits eingebaut • Andernfalls neue Version notwendig - ist diese lieferbar und erfordert ggf. Konvertierung

  18. Grundsatzüberlegungen (2) • Multi-Plattform-fähige Anwendung? • Unterstützt: Windows 95 ff., Windows NT • Plattformfähigkeit weiterhin notwendig? • Umsetzung über Internet-Browser? • Upgrade auf Windows95-GUI ? • Minimalitische Umsetzung nicht möglich..

  19. Konvertierungsansätze Verschiedene Konvertierungsansätze von FoxPro/Win nachMicrosoft Visual FoxPro

  20. Vorteile: Geringster Aufwand Keine weitere Entwicklungszeit oder Entwicklungs- bzw. Lernaufwand Nachteile: Keine Nutzung des Ereignismodells Keine Nutzung des Objektmodells Altes Userinterface Im Vergleich hohe Wartungskosten Minimalistischer Ansatz

  21. Vorteile: Alter Code weiterverwendbar Ereignismodell Teilweise Objekt-modell nutzbar Neue Funktionen User-Interface Nachteile: Gemischte Programmierung aufwendig (vor allem Debugging) VFP-Lernaufwand für Ereignisse/OOP Wartungsaufwand Hybrider Ansatz

  22. Vorteile: Bessere Design-werkzeuge Datenbankcon-tainer verwendbar Alle Vorteile der Objektorientierten Programmierung Nachteile: Hohe Lernkurve für OOP Reengineering der Anwendungs-Architektur Höherer Zeit- und Geldaufwand „Neuschreiben“

  23. Minimalistischer Ansatz Der minimalistische Ansatz zur Konvertierung von FPW nachMicrosoft Visual FoxPro

  24. Minimalistischer Ansatz • Neues Projekt anlegen • Hauptprogramm addieren • keine Maske zulässig - würde konvertiert... • Projekt neu erstellen • (.SPR statt .SCX) • Zusatzdateien einfügen • Bitmaps, Include-Dateien • Applikation erstellen

  25. Gemischte Nutzung • Fallunterscheidung zu Version • NAME-Klausel zu Fenstern • führt zu Form.Pageframe1.Page1 • READ-Befehl weiter notwendig • NAME-Klausel zu GET-Feldern • Arbeiten mit Activepage • Anpassung GenScrn (Setup1/2)

  26. Hybrider Ansatz Der hybride Ansatz zur Konvertierung von FoxPro/Windows nachMicrosoft Visual FoxPro

  27. Konvertierung Projektebene • Alle Projektkomponenten auf einmal • Automatische Konvertierung für • Etiketten • Abfragen (Queries) • Menüs • Berichte • Einzige Möglichkeit für Maskensets

  28. Konvertierung Berichte (1) • FoxPro/DOS-Reports aus FPW-Projekten sind nicht konvertierbar • Druckertreiber werden von Windows verwaltet (kein GENPD.APP mehr) • Neue Funktionen möglich • REPORT FORM ASCII / PREVIEW • _GENHTML

  29. Konvertierung Berichte (2) • FoxPro/Win-Reports direkt aufrufbar • „USER“-Feld zu „FRX“-Datei • Memofeldbreite von 10 auf 4 Byte • Environment in Dataenvironment • AutoOpen/AutoClose-Eigenschaft • „Environment“ in DE.OpenTables

  30. Konvertierungsassistent • Quellcode unter VFP\Tools\Convert • Backup lieber vorher selbst machen • Logfile nicht sonderlich interessant • Unterscheidung für Masken zwischen • funktionaler Konvertierung • visueller Konvertierung

  31. Funktional: „\OLDx“-Backup Masken „s2x/t“ Verlagerung von Code-Snippets in neue Ereignisse und Methoden Visuell: Snippet-Code wird in eine Programm-datei ausgelagert und muß VON HAND zugeordnet werden (= Cut & Paste) Konvertierungsarten

  32. Funktionale Konvertierung Besonderheiten bei der funktionalen Konvertierung von Masken unterMicrosoft Visual FoxPro

  33. FoxPro/Windows: Setup #Section 1 Setup #Section 2 Activate Deactivate Show When Valid Cleanup Visual FoxPro: FormSet.Load Form.Load Form/Set.Activate Formset.Deactivate Formset.ReadShow Formset.ReadWhen Formset.ReadValid Formset.Unload +SPR Konvertierung Ereignisse

  34. FoxPro/Windows: CYCLE LOCK MOUSE SAVE TIMEOUT Visual FoxPro: FormSet.ReadCycle FormSet.ReadLock FormSet.ReadMouse FormSet.ReadSave FormSet.ReadTimeout Konvertierung READ-Optionen

  35. Erzeugung „SPR“-Datei (Code-Tab) • „SPR“-Datei wird als Wrapper generiert • [Converter] Declare Arrays • EXTERNAL ARRAY <arrayname> • [Converter] DeclareVariables • PUBLIC _GotoPlaceHolder • EXTERNAL PROC <maske>.scx • DO FORM <maske.scx> NAME <zufall> LINKED • [Converter] Begin/End CLEANUP • CLEANUP und andere Prozeduren/Funktionen

  36. Aufbau konvertierte Maske Maske: • Formset (immer, auch wenn nur 1 Maske) • Form (Anzahl je nach Maskengruppe) • Pageframe (immer) • Page (Anzahl je nach Read-Leveln) Steuerelemente: • CommandButtonGroup (auch 1 Button)

  37. Eigenschaft „WindowType“ • Nur bei funktionaler Konvertierung • 2 = READ, 3 = READ MODAL • Formset bekommt 2.6-Read-Methoden • Formset.Load lädt „gebundene“ Variablen! • „Environment“ wird im Load gesetzt • Recordpointer im Unload in globale Vars.! • DataEnvironment enthält „Umgebung“ • AutoOpen/AutoClose wird gesetzt

  38. FoxPro/Windows: Maskengruppe Maske/Screen READ-Level READ-Befehl MODAL-Klausel Visual FoxPro: FormSet Form in FormSet Page in Pageframe WindowType=2 WindowType=3 Maskeneigenschaften (1)

  39. FoxPro/Windows: Open / Close Titel Name, Koordinaten, Moveable, Icon Center Border Close Color Visual FoxPro: Dataenvironment Caption dito Autocenter Borderstyle Closeable Backcolor Maskeneigenschaften (2)

  40. FoxPro/Windows: HalfHeight Titlebar Wallpaper Minimize Font Environment Visual FoxPro: HalfHeight Caption Picture MinButton Fontname, Fontsize, Font-Flags (Bold usw.) Dataenvironment Maskeneigenschaften (3)

  41. Nachbearbeitung von Masken (1) • READ MODAL+DEACTIVATE beides aktiv! • Doppelte Namen für Form/Control/Var. • Shapes immer hinter allen Controls • Unsichtbare Buttons immer vor Controls • Funktionen mittlerweile belegt • OLDVAL(), HOME() und ähnliche Namen evtl. vorh. • Makro-Substition nicht in Eigenschaften! • &cPrompt => =&cPrompt => = cPrompt

  42. Nachbearbeitung von Masken (2) • Setup-RETURN zu RETURN .F. ändern! • GenScreenX-Direktiven nicht mehr vorhanden, ggf. visuell konvertieren... • #INSERT wird eingelesen • #INSERT darf nur Direktiven enthalten • besser: Direktiven in .h-Datei verlagern und diese dann setzen oder mit #INCLUDE angeben

  43. FoxPro/Windows: CLEAR READ SHOW GET SHOW GETS READ SHOW/WHEN READ DE/ACTIVATE READ VALID Visual FoxPro: Thisform.Release() <object>.Refresh() bzw. <listbox>.Requery() Thisform.Refresh() Thisform.Load() Thisform.DeActivate() Thisform.Query-unload() Verlagern von Code

  44. Sonstige Änderungen • Maskenset bei Einzelmasken entfernen • Pageframe und Pages entfernen • Parameter von Load nach Init verlagern • Load-Variablen in eigene Eigenschaften • SPR-Code in eigene Methoden • „Private“ Datasessions • WindowType 2=>0, 3=>1 (Einbahnstraße!)

  45. Probleme mit Tabellen • Lange Variablen/Tabellennamen gültig! • Viel mehr Arbeitsbereiche! (Schleifen!) • ON KEY LABEL CTRL+0 verhindert .NULL. • NULL, DBC, neue Feldarten konvertieren Tabellen nach VFP-Format, zurück mit: COPY TO <table> NEXT 0 TYPE FOX2X

  46. Grobe Aufwandsschätzung • Übersichtsmasken 1/4 MT • Konfigurationsmasken 1/2 MT • "Onetomany"-Masken 4 MT • Dialogmasken 1/8 MT • Berichte 1/4 MT • Tabellen 1/8 MT • Menüs 1/8 MT

  47. OLE-Server aus FoxPro/Windows Erzeugen von OLE-Public-DLLs aus FoxPro/Windows-Anwendungen mitMicrosoft Visual FoxPro

  48. FPW-Wrapper (1) Ox = Createobject( „Test“ ) Define Class Test as custom olepublic Procedure Init cd <wohinauchimmer> set path to data this.application.visible = .T. Procedure DoIt do <maske.spr> Enddefine

  49. FPW-Wrapper (2) Ausführung aus anderen Programmiersprachen: Ox = Createobject( „Test.Test“ ) Ox.DoIt() Wenn im READ Tabelle nicht geschlossen wird: ? Ox.application.Eval( <feldname> )

More Related