Data.Win.ADODB.TADOBlobStream.Write

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

function Write(const Buffer; Count: Longint): Longint; override;

C++

virtual int __fastcall Write(const void *Buffer, int Count)/* overload */;
inline int __fastcall  Write(const System::DynamicArray<System::Byte> Buffer, int Offset, int Count){ return System::Classes::TStream::Write(Buffer, Offset, Count); }
inline int __fastcall  Write(const System::DynamicArray<System::Byte> Buffer, int Count){ return System::Classes::TStream::Write(Buffer, Count); }

Propriétés

Type Visibilité  Source Unité  Parent
function public
Data.Win.ADODB.pas
Data.Win.ADODB.hpp
Data.Win.ADODB TADOBlobStream

Description

Write écrit les données d'un tampon mémoire dans un objet champ BLOB.

Appelez la méthode Write pour copier les données d'un tampon mémoire d'une chaîne à zéro terminal (ou comparable) dans l'objet champ BLOB. Write copie les données du tampon depuis la position en cours (celle indiquée par la propriété Position) dans l'objet champ BLOB. Write copie le nombre d'octets spécifié par Count ou le nombre d'octets restant dans le tampon (de la position en cours jusqu'à la fin) si cette valeur est inférieure. Write peut être appelée à plusieurs reprises pour un même Write, chaque appel copiant moins que le nombre total d'octets à copier.

Count représente le nombre maximum d'octets à copier en un seul appel de Write. Le paramètre Count peut être inférieur, égal ou supérieur au nombre réel d'octets restant dans le tampon mémoire. Si Count est supérieur au nombre réel d'octets présents ou restants dans le tampon mémoire, la copie s'arrête au dernier octet. Il n'y a pas de pénalité sur les exceptions générées en spécifiant une valeur supérieure à la taille réelle du contenu.

Write actualise la propriété Size à Position + Count, puis initialise la propriété Position avec la nouvelle valeur de Size. De ce fait, toutes les données du flux mémoire placées dans les Count octets suivant la position en cours sont perdues après l'appel de Write.

Une fois son exécution achevée avec succès, Write renvoie le nombre d'octets copiés dans l'objet champ BLOB. Si la valeur renvoyée est inférieure à Count, c'est probablement parce que la fin du tampon a été atteinte avant de copier le nombre spécifié d'octets.



var
P: PChar;
S: Integer;
BS:TADOBlobStream;
begin
if not (ADOTable1.State in [dsEdit, dsInsert]) then
ADOTable1.Edit;
BS := TADOBlobStream.Create(TMemoField(ADOTable1.Fields[1]), bmWrite);
try
S := Memo1.GetTextLen;
Inc(S);
P := AllocMem(S);
FillChar(P^, S, #0);
Memo1.GetTextBuf(P, S);
BS.Write(P^, S);
finally
BS.Free;
FreeMem(P, S);
end;
end;



int S;
ADOTable1->Edit();
TADOBlobStream *BS = new TADOBlobStream(ADOTable1->Fields->Fields[1], bmWrite);
try
{
S = Memo1->GetTextLen() + 1;
char *P = new char[S];
Memo1->GetTextBuf(P, S);
BS->Write(P.c_str(), P.Length());
}
__finally
{
delete BS;
}



Voir aussi