locked
Daten aus VB6 auslesen. User defined Datentyp RRS feed

  • Frage

  • Hallo,

    ich suche jemanden der sich sowohl mit VFP als auch mit VB6 auskennt.

    ich habe ein großes Programmpaket übernommen, das in VB6 programmiert ist. Es gibt darin sehr viele random Datenzugriffe.

    Die gespeicherten Daten sind vorher mit dem Befehl "Type" erstellt worden, sind richtig groß, viele Arrays darin definiert, etc.

    Mit "PUT" werden die Daten geschrieben, mit "GET" gelesen. Die gesamte Struktur wird auf diese Art in der jeweiligen Datei gespeichert.

    Ich muss die Daten erst mal konvertieren, damit man was damit anfangen kann.

    Meine Frage ist, gibt es in VFP solche Datentypen?

    Könnte man ein Array definieren, das wiederum Arrays enthält?

    Können VB6.DLLs von VFP aus aufgerufen werden, um die Daten zu verwalten?

    Für jeden Tip wäre ich dankbar.

    Harald

    Freitag, 17. Oktober 2014 07:36

Alle Antworten

  • Hallo Harald,
    die Types ließen sich wohl am ehesten mit Klassen übersetzten.
    Doch was  für eine Bedeutung haben die Types?
    Ist das etwa die Datenhaltung? Kennt das Programm etwas keine Anbindung zu einer Datenbank und schreibt alles in ASCII Dateien? Wieviele Types hat es denn?

    Solange Du ein VB6-COM dll hast, sollst Du aus VFP den Zugriff hinbekommen.  

    Und ja Du kannst in einer VFP-Klasse selbstdefinierte Datentypen als Eigenschaft verwenden.

    Nur hast Du dir diesen Schritt wirklich reiflich überlegt? Beides sind Produkte die seit Jahren auf der Liste der Anwendungen stehen die nicht mehr Unterstützt werden. Auch wenn die aktuellen Meldungen lauten es liefe auf Windows 10, so sind doch die Details unklar und das ist doch nicht Zukunftsträchtig.

    Grüße Alexander

    Freitag, 17. Oktober 2014 08:32
  • Da man mit dem Arraynamen ohne Index immer das erste Arrayelement anspricht, und da weder LOCAL ARRAY no DIMENSION eine Syntax erlauben für Arrays in Arrays kannst Du die Idee vergessen.

    Aber ein Type ist nichts anderes als die Definition eines Datensatzes. Insofern würde man TYPEs mit CURSORen übersetzen können. Wenn ein TYPE einen anderen als teil enthält, dann löst man das per Fremdschlüssel auf.

    Statt mit Cursoren kannst Du auch mit Recordobjecten hantieren, angefangen mit EmptyType = CREATEOBJECT("EMPTY") und ADDPROPERTY(EmptyType,"property",value) kannst Du ein einzelnes object eines Typen generieren, leichter ist es bei entsprechendem Cursor per SCATTER NAME oRecord.

    Bei den Recordobjekten dieser Art kann man auch per ADDPROPERTY() auch weitere Eigensschaften für Kindobjekte anlegen und sie dort reinsetzen, oder man fügt eine Collection an und dort dann weitere Recordobjekte. Der Zugriff auf einzelne Daten wird dadurch aber beliebig kompliziert. VFP kann zwar SQL aber nicht Linq To Objects oder ähnliches.

    Aber das nur zu den theoretischen Möglichkeiten etwas vergleichbares mit im RAM aufzubauen, die Daten in Tabellenform zu bringen geht natürlich am besten über den Ansatz mit dem Speichern eines Fremdschlüssels (Verweises) statt eines Unterobjekts.

    Und wie Alexander schon sagte, es wird in VFP nicht besser mit der Zukunftsträchtigkeit der Software.

    Wenn Du mit VB DLLs ActiveX meinst, die kann man in VFP ansprechen, ja, aber das macht es auch nicht besser.

    Tschüß, Olaf.


    Olaf Doschke - TMN Systemberatung GmbH http://www.tmn-systemberatung.de

    Freitag, 17. Oktober 2014 19:25