|
| OLEVariant til Byte array Fra : Bear |
Dato : 31-10-01 22:52 |
|
Hej
Jeg henter record ud af en Palm Pilot vha. COM (benytter CDK) og får
retuneret record'en som en OLEVariant. Denne OLEVariant skulle være et byte
array af den hentede record, men hvordan fan' får jeg hevet skidtet ud?
Jeg har prøvet at type caste til alverdens datatyper, men uden held.
I VB hvor eksemplerne er til kan man uden problemer type caste OLEVariant
til byte array og den anden vej, men det synes Delphi overhovedet ikke er
sjovt.
Her er eksempelkoden til VB:
Dim bArray() As Byte
Dim vData As Variant
' Convert to a byte array
vData = bArray
ReDim vData(0 To Len(txtData.Text))
--
mvh
Bear
ICQ: 2745075
| |
Thomas Riedel (02-11-2001)
| Kommentar Fra : Thomas Riedel |
Dato : 02-11-01 10:50 |
|
Hvordan ser din Delphi kode ud (den, der ikke virker)?
--
Thomas Riedel, LogiHouse
"Bear" <bdr@NOSPAM.sol.dk> wrote in message news:9rprpm$r38$1@sunsite.dk...
> Hej
>
> Jeg henter record ud af en Palm Pilot vha. COM (benytter CDK) og får
> retuneret record'en som en OLEVariant. Denne OLEVariant skulle være et
byte
> array af den hentede record, men hvordan fan' får jeg hevet skidtet ud?
> Jeg har prøvet at type caste til alverdens datatyper, men uden held.
>
> I VB hvor eksemplerne er til kan man uden problemer type caste OLEVariant
> til byte array og den anden vej, men det synes Delphi overhovedet ikke er
> sjovt.
>
> Her er eksempelkoden til VB:
> Dim bArray() As Byte
> Dim vData As Variant
> ' Convert to a byte array
> vData = bArray
> ReDim vData(0 To Len(txtData.Text))
>
> --
> mvh
>
> Bear
> ICQ: 2745075
>
>
| |
Bear (02-11-2001)
| Kommentar Fra : Bear |
Dato : 02-11-01 17:08 |
|
procedure TForm1.Button2Click(Sender: TObject);
var
db : TPDDatabaseQuery;
pMemo : PDRecordAdapter;
vUniqueId : OLEVariant;
pUtility : TPDUtility;
vData : OLEVariant;
s : WideString;
barray : array of Byte;
begin
db := TPDDatabaseQuery.Create(self);
pUtility := TPDUtility.Create(self);
pMemo := db.OpenRecordDatabase('MemoDB','PDDirect.PDRecordAdapter', eRead
or eWrite or eShowSecret) as IPDRecordAdapter;
pMemo.IterationIndex := 0;
s := 'Her er noget tekst';
SetLength(barray,Length(s));
vData := barray;
pUtility.BSTRToByteArray(vData,0,s); <---- det har den ikke lyst til.
pMemo.Write(vUniqueId,0,0,vData);
db.Disconnect;
end;
Jeg skal have converteret min OleVariant til et byte array som kan forståes
af HotSync automation server, men hvordan gøres det?
--
mvh
Bear
ICQ: 2745075
| |
Thomas Riedel (05-11-2001)
| Kommentar Fra : Thomas Riedel |
Dato : 05-11-01 17:10 |
|
Hvad med almindelig typecast:
s := string(vdata);
for i := 1 to length(s) do
...
kan det ikke klare opgaven?
mvh
--
Thomas Riedel, LogiHouse
"Bear" <bdr@NOSPAM.sol.dk> wrote in message news:9rugdc$r46$1@sunsite.dk...
>
> procedure TForm1.Button2Click(Sender: TObject);
> var
> db : TPDDatabaseQuery;
> pMemo : PDRecordAdapter;
> vUniqueId : OLEVariant;
> pUtility : TPDUtility;
> vData : OLEVariant;
> s : WideString;
> barray : array of Byte;
> begin
> db := TPDDatabaseQuery.Create(self);
> pUtility := TPDUtility.Create(self);
> pMemo := db.OpenRecordDatabase('MemoDB','PDDirect.PDRecordAdapter',
eRead
> or eWrite or eShowSecret) as IPDRecordAdapter;
> pMemo.IterationIndex := 0;
> s := 'Her er noget tekst';
> SetLength(barray,Length(s));
> vData := barray;
>
> pUtility.BSTRToByteArray(vData,0,s); <---- det har den ikke lyst til.
> pMemo.Write(vUniqueId,0,0,vData);
> db.Disconnect;
> end;
>
> Jeg skal have converteret min OleVariant til et byte array som kan
forståes
> af HotSync automation server, men hvordan gøres det?
> --
> mvh
>
> Bear
> ICQ: 2745075
>
>
| |
Casper A. Hansen (07-11-2001)
| Kommentar Fra : Casper A. Hansen |
Dato : 07-11-01 16:42 |
|
"Bear" <bdr@NOSPAM.sol.dk> wrote in message news:<9rprpm$r38$1@sunsite.dk>...
> Hej
>
> Jeg henter record ud af en Palm Pilot vha. COM (benytter CDK) og får
> retuneret record'en som en OLEVariant. Denne OLEVariant skulle være et byte
> array af den hentede record, men hvordan fan' får jeg hevet skidtet ud?
> Jeg har prøvet at type caste til alverdens datatyper, men uden held.
>
> I VB hvor eksemplerne er til kan man uden problemer type caste OLEVariant
> til byte array og den anden vej, men det synes Delphi overhovedet ikke er
> sjovt.
>
> Her er eksempelkoden til VB:
> Dim bArray() As Byte
> Dim vData As Variant
> ' Convert to a byte array
> vData = bArray
> ReDim vData(0 To Len(txtData.Text))
var
wBytes : Array of Byte;
wData : Variant;
begin
// initialisere wData med data.
Assert( VarType(wData) = (varArray or varByte), 'Data er ikke en
array of bytes.');
Assert( VarArrayLowBound(wData, 1) = 0, 'Array starter ikke på 0');
SetLength(wBytes, VarArrayHighBound(wData, 1));
for i := 0 to
VarArrayHighBound(wData, 1) do begin
wBytes[i] := wData[i];
end;
end;
Kik efter flere detaljer i Delphi Help, der er mange gode tips.
/Casper
| |
|
|