
A mellékelt példaprogram megnyitása előtt a DBConverter2.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
A komponens Table property-jén keresztül adhatunk meg egy TTable komponenst, amelynek a tartalmát konvertálni szeretnénk. A komponens Paradox és DBase közti konverzió megvalósítására készült.
A komponens, a megadott TTable alapján eldönti, hogy DBase vagy Paradox tábláról van-e szó, és a konverziót annak megfelelően végzi el.
Az új tábla elérési útját és nevét a NewTableName property-ben adhatjuk meg.
A konvertálás a Convert metódus meghívására történik meg.
function Convert: Boolean;
A metódus visszatérési értéke csak akkor igaz, ha a konvertálás során az adatszerkezet létrehozása és a feltöltés is sikeres volt.
A komponens elkészítése
A DBase-ben és a Paradox-ban használható mezőtípusok nagyon eltérőek.
Első lépésben létre kell hoznunk egy új adattáblát, a megfelelő mezőszerkezettel. Ehhez egy TTable objektumot használunk.
with NewTable do begin
Active:=False;
TableType:=ttDBase;
TableName:=FNewTableName;
FieldDefs.Clear;
end;
...
with NewTable.FieldDefs.AddFieldDef do begin
A FieldDef property Name tagjában adhatjuk meg a mezőnevet, A DataType-ban a mező típusát, valamint a Size tagban a mező méretét, ha szükséges.
Amikor dinamikusan hozunk létre adattáblákat, a mezők típusát a TFieldType típussal definiálhatjuk.
Ha azt akarjuk, hogy komponensünk minden eshetőségre fel legyen készülve, le kell programoznunk minden esetet, azaz fel kell készülnünk a DataType property bármilyen értékére.
DBase mezők
| DBase típus |
TFieldType |
| CHARACTER |
ftString |
| FLOAT |
ftFloat |
| NUMBER |
ftFloat |
| DATE |
ftDate |
| LOGICAL |
ftBoolean |
| MEMO |
ftMemo |
| OLE |
ftDBaseOLE |
| BINARY |
ftTypedBinary |
Paradox mezők
| Paradox típus |
TFieldType |
| Alpha |
ftString |
| Number |
ftFloat |
| Money |
ftCurrency |
| Short |
ftSmallInt |
| Long Integer |
ftInteger |
| BCD |
ftBCD |
| Date |
ftDate |
| Time |
ftTime |
| TimeStamp |
ftDateTime |
| Memo |
ftMemo |
| Formatted Memo |
ftFmtMemo |
| Graphic |
ftGraphic |
| OLE |
ftParadoxOLE |
| Logical |
ftBoolean |
| AutoIncrement |
ftAutoInc |
| Binary |
ftBlob |
| Bytes |
ftBytes |
Az adatszerkezet létrehozásánál meg kell próbálnunk a két adatbázis típus mezőit megfeleltetnünk egymásnak.
Miután beállítottuk a TTable szerkezetét, a CreateTable metódus meghívásával létrejön a tábla.
Miután elkészült a tábla, át kell másolnunk a rekordokat.
while not FTable.Eof do begin
NewTable.Append;
for i:=0 to NewTable.FieldCount-1 do
try
NewTable.Fields[i].AsString:=FTable.Fields[i].AsString;
except
try
NewTable.Fields[i].Value:=FTable.Fields[i].Value;
except
end;
end;
NewTable.Post;
FTable.Next;
end;