AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FlashFiler für D2007
Thema durchsuchen
Ansicht
Themen-Optionen

FlashFiler für D2007

Ein Thema von oki · begonnen am 9. Jun 2009 · letzter Beitrag vom 9. Jun 2009
Antwort Antwort
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#1

FlashFiler für D2007

  Alt 9. Jun 2009, 07:58
Datenbank: Turbo Power Flash Filer • Version: 2.13 • Zugriff über: FlashFiler-Komponenten
Hallo Leute,

ich habe ein schon in die Jahre gekommenes Projekt, bei dem ich die Datenbank von ehemals TurboPower verwende. Der Code ist jetzt schon etwas in die Jahre gekommen und ist eine Client-Server-Anwendung. Dazu existieren mehrere Programme. Das ist alles unter D5 geproggt (meiner seiner). Nun möchte ich successive einzelne Programme über meine 2007'er IDE ziehen. Leider liegt mir der FlashFiler-Code nur für eine Delphi-Version bis D7 vor. So weit ich weis, wurde die Weiterentwicklung auch eingestellt. Trotzdem ist der Schritt auf eine neue DB aktuell zu groß. Ich würde lieber alle Programme nach und nach in D2007 redesignen und die Schnittstelle zur DB umarbeiten. Um dafür nicht alle Programme mit einem mal updaten zu müssen möchte ich das so gestalten, dass zuerst noch FlashFiler als DB genutzt wird. Später will ich dann auf eine neue DB umstellen (Firebird).

Nun besteht mein Problem darin, dass ich die Packages für FlashFiler nicht sauber unter D2007 compiliert bekomme. Neben der Erkennung der Version der IDE (habe ich in der *.inc) eingearbeitet, werden weitere Fehler gemeldet. Zum Bsp. hier:
Delphi-Quellcode:
const

  {$IFNDEF DCC6OrLater}
  FldTypeMap: TFieldMap = (
    fldUNKNOWN, fldZSTRING, fldINT16, fldINT32, fldUINT16, fldBOOL,
    fldFLOAT, fldFLOAT, fldBCD, fldDATE, fldTIME, fldTIMESTAMP, fldBYTES,
    fldVARBYTES, fldINT32, fldBLOB, fldBLOB, fldBLOB, fldBLOB, fldBLOB,
    fldBLOB, fldBLOB, fldCURSOR, fldZSTRING, fldZSTRING, fldINT64, fldADT,
    fldArray, fldREF, fldTABLE, fldBLOB, fldBLOB, fldUNKNOWN, fldUNKNOWN,
    fldUNKNOWN, fldZSTRING);

  DataTypeMap: array[0..MAXLOGFLDTYPES - 1] of TFieldType = (
    ftUnknown, ftString, ftDate, ftBlob, ftBoolean, ftSmallint,
    ftInteger, ftFloat, ftBCD, ftBytes, ftTime, ftDateTime,
    ftWord, ftInteger, ftUnknown, ftVarBytes, ftUnknown, ftUnknown,
    ftLargeInt, ftLargeInt, ftADT, ftArray, ftReference, ftDataSet);

  {$ELSE}
  FldTypeMap: TFieldMap = (
    fldUNKNOWN, fldZSTRING, fldINT16, fldINT32, fldUINT16, fldBOOL,
    fldFLOAT, fldFLOAT, fldBCD, fldDATE, fldTIME, fldTIMESTAMP, fldBYTES,
    fldVARBYTES, fldINT32, fldBLOB, fldBLOB, fldBLOB, fldBLOB, fldBLOB,
    fldBLOB, fldBLOB, fldCURSOR, fldZSTRING, fldZSTRING, fldINT64, fldADT,
    fldArray, fldREF, fldTABLE, fldBLOB, fldBLOB, fldUNKNOWN, fldUNKNOWN,
    fldUNKNOWN, fldZSTRING, fldTIMESTAMP, fldBCD);

  DataTypeMap: array[0..MAXLOGFLDTYPES - 1] of TFieldType = (
    ftUnknown, ftString, ftDate, ftBlob, ftBoolean, ftSmallint,
    ftInteger, ftFloat, ftBCD, ftBytes, ftTime, ftDateTime,
    ftWord, ftInteger, ftUnknown, ftVarBytes, ftUnknown, ftUnknown,
    ftLargeInt, ftLargeInt, ftADT, ftArray, ftReference, ftDataSet,
    ftTimeStamp, ftFMTBCD);

  {$ENDIF}
Die Fehlermeldung lautet:
Zitat:
[DCC Fehler] ffdb.pas(2040): E2072 Anzahl der Elemente (38) weicht von der Deklaration (42) ab
TFieldMap ist so deklariert:
Delphi-Quellcode:
type
  TFieldMap = array[TFieldType] of Byte;
Offensichtlich definiert hier D2007 mehr Feldtypen als D7. Nun könnte mann das natürlich überarbeiten und anpassen. Ich hab aber die Befürchtung, dass ich das in eine endlose Geschichte gerate.

Hat sich schon mal jemand der Problematik angenommen den FlashFiler-Code auf eine höhere Delphi-Version als D7 anzupassen und kann mir berichten, ob sich der Aufwand lohnt?

Wenn ich an der Korrektur von FlashFiler länger arbeite als an der Einbindung einer neuen DB; Fatal.

Ich dank schon mal im Voraus,

Gruß oki
42
  Mit Zitat antworten Zitat
Benutzerbild von dataspider
dataspider

Registriert seit: 9. Nov 2003
Ort: 04539 Groitzsch
1.350 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: FlashFiler für D2007

  Alt 9. Jun 2009, 09:47
Hi,

hast du gegoogelt?
Der erste Eintrag: FlashFiler und Delphi 2007

So wie es aussieht, hast du das Proplem bereits überblickt.

Frank
Frank Reim
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#3

Re: FlashFiler für D2007

  Alt 9. Jun 2009, 10:08
Uppps

ja google dein Freund, hatte glatt nicht dran gedacht. Ich schau mir das mal an und melde mich danach noch mal.

Dank und Gruß
oki
42
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#4

Re: FlashFiler für D2007

  Alt 9. Jun 2009, 10:14
Joop, genau an den Stellen war ich dran. Das mit den neuen Feldern hatte ich aber nicht so parat. Nochmals Dank für den Link und Gruß oki
42
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#5

Re: FlashFiler für D2007

  Alt 9. Jun 2009, 10:33
Ich habe es nicht ganz so gemacht wie in dem Link beschrieben. Den Code zu dublizieren hatte ich keine Lust. Somit habe ich die entsprechenden Units direkt geändert.
Hier die Änderungen in ffdb.pas:
Delphi-Quellcode:
  {$IFNDEF DCC6OrLater}
  FldTypeMap: TFieldMap = (
    fldUNKNOWN, fldZSTRING, fldINT16, fldINT32, fldUINT16, fldBOOL,
    fldFLOAT, fldFLOAT, fldBCD, fldDATE, fldTIME, fldTIMESTAMP, fldBYTES,
    fldVARBYTES, fldINT32, fldBLOB, fldBLOB, fldBLOB, fldBLOB, fldBLOB,
    fldBLOB, fldBLOB, fldCURSOR, fldZSTRING, fldZSTRING, fldINT64, fldADT,
    fldArray, fldREF, fldTABLE, fldBLOB, fldBLOB, fldUNKNOWN, fldUNKNOWN,
    fldUNKNOWN, fldZSTRING);

  DataTypeMap: array[0..MAXLOGFLDTYPES - 1] of TFieldType = (
    ftUnknown, ftString, ftDate, ftBlob, ftBoolean, ftSmallint,
    ftInteger, ftFloat, ftBCD, ftBytes, ftTime, ftDateTime,
    ftWord, ftInteger, ftUnknown, ftVarBytes, ftUnknown, ftUnknown,
    ftLargeInt, ftLargeInt, ftADT, ftArray, ftReference, ftDataSet);

  {$ELSE}
  {$IFDEF VER180}
  FldTypeMap: TFieldMap = (
    fldUNKNOWN, fldZSTRING, fldINT16, fldINT32, fldUINT16, fldBOOL, // 0..5
    fldFLOAT, fldFLOAT, fldBCD, fldDATE, fldTIME, fldTIMESTAMP, fldBYTES, // 6..12
    fldVARBYTES, fldINT32, fldBLOB, fldBLOB, fldBLOB, fldBLOB, fldBLOB, //13..19
    fldBLOB, fldBLOB, fldCURSOR, fldZSTRING, fldZSTRING, fldINT64, fldADT, // 20..26
    fldArray, fldREF, fldTABLE, fldBLOB, fldBLOB, fldUNKNOWN, fldUNKNOWN, // 27..33
    fldUNKNOWN, fldZSTRING, fldDATETIME, fldBCD, // 34..37
    fldZSTRING, fldBLOB, fldDATETIME, fldINT32); // 38..41

  DataTypeMap: array[0..MAXLOGFLDTYPES - 1] of TFieldType = (
    ftUnknown, ftString, ftDate, ftBlob, ftBoolean, ftSmallint,
    ftInteger, ftFloat, ftBCD, ftBytes, ftTime, ftDateTime,
    ftWord, ftInteger, ftUnknown, ftVarBytes, ftUnknown, ftUnknown,
    ftLargeInt, ftLargeInt, ftADT, ftArray, ftReference, ftDataSet,
    ftTimeStamp, ftFMTBCD);

  {$ELSE}

  FldTypeMap: TFieldMap = (
    fldUNKNOWN, fldZSTRING, fldINT16, fldINT32, fldUINT16, fldBOOL,
    fldFLOAT, fldFLOAT, fldBCD, fldDATE, fldTIME, fldTIMESTAMP, fldBYTES,
    fldVARBYTES, fldINT32, fldBLOB, fldBLOB, fldBLOB, fldBLOB, fldBLOB,
    fldBLOB, fldBLOB, fldCURSOR, fldZSTRING, fldZSTRING, fldINT64, fldADT,
    fldArray, fldREF, fldTABLE, fldBLOB, fldBLOB, fldUNKNOWN, fldUNKNOWN,
    fldUNKNOWN, fldZSTRING, fldTIMESTAMP, fldBCD);

  DataTypeMap: array[0..MAXLOGFLDTYPES - 1] of TFieldType = (
    ftUnknown, ftString, ftDate, ftBlob, ftBoolean, ftSmallint,
    ftInteger, ftFloat, ftBCD, ftBytes, ftTime, ftDateTime,
    ftWord, ftInteger, ftUnknown, ftVarBytes, ftUnknown, ftUnknown,
    ftLargeInt, ftLargeInt, ftADT, ftArray, ftReference, ftDataSet,
    ftTimeStamp, ftFMTBCD);
  {$ENDIF}
  {$ENDIF}

 BlobTypeMap: array[fldstMEMO..fldstBFILE] of TFieldType = (
    ftMemo, ftBlob, ftFmtMemo, ftParadoxOle, ftGraphic, ftDBaseOle,
    ftTypedBinary, ftBlob, ftBlob, ftBlob, ftBlob, ftOraClob, ftOraBlob,
    ftBlob, ftBlob);
{$ENDIF}
Hier die Ergänzungen in ffsrbde.pas:
Delphi-Quellcode:
const
{ Field Types (Logical) }

  fldUNKNOWN = 0;
  fldZSTRING = 1; { Null terminated string }
  fldDATE = 2; { Date     (32 bit) }
  fldBLOB = 3; { Blob }
  fldBOOL = 4; { Boolean  (16 bit) }
  fldINT16 = 5; { 16 bit signed number }
  fldINT32 = 6; { 32 bit signed number }
  fldFLOAT = 7; { 64 bit floating point }
  fldBCD = 8; { BCD }
  fldBYTES = 9; { Fixed number of bytes }
  fldTIME = 10; { Time        (32 bit) }
  fldTIMESTAMP = 11; { Time-stamp  (64 bit) }
  fldUINT16 = 12; { Unsigned 16 bit integer }
  fldUINT32 = 13; { Unsigned 32 bit integer }
  fldFLOATIEEE = 14; { 80-bit IEEE float }
  fldVARBYTES = 15; { Length prefixed var bytes }
  fldLOCKINFO = 16; { Look for LOCKINFO typedef }
  fldCURSOR = 17; { For Oracle Cursor type }
  fldINT64 = 18; { 64 bit signed number }
  fldUINT64 = 19; { Unsigned 64 bit integer }
  fldADT = 20; { Abstract datatype (structure) }
  fldARRAY = 21; { Array field type }
  fldREF = 22; { Reference to ADT }
  fldTABLE = 23; { Nested table (reference) }
  {$IFDEF VER180}
  fldDATETIME = 24;
  fldFMTBCD = 25;
  fldWIDESTRING = 26;
  {$ENDIF}
und hier die Ergänzungen in ffdefine.inc gleich hinter dem Block für VER150
Zitat:
{$IFDEF VER180}
{$DEFINE DCC4OrLater}
{$DEFINE DCC5OrLater}
{$DEFINE DCC6OrLater}
{$DEFINE DCC7OrLater}
{$DEFINE ProvidesDatasource}
{$IFNDEF BCB}
{$DEFINE Delphi7}
{$DEFINE IsDelphi}
{$DEFINE HasStrictCardinal}
{$DEFINE ResizePersistFields}
{$DEFINE ExprParserType3}
{$ENDIF}
{$ENDIF}
Aus mir unerfindlichen Gründen war in Requires des Designtime-Package das Package ff213_r70 angegeben. Das habe ich in meinem gesamten TP-Ordner nicht gefunden. Dafür habe ich das von mir aktualisierte Package ff2_r70 eingetragen.

Compoiling und Installation beider Packages lief dann problemlos. Ich hoffe nur, der laufende Betrieb leifert das gleiche Ergebnis. Ich werds testen.

Gruß oki
42
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz