/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
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

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste