Registriert seit: 6. Apr 2005
Ort: Wedemark
47 Beiträge
Delphi XE8 Professional
|
Re: Stringfield in Datenbank; EIN Byte ÄNDERN
26. Sep 2007, 14:34
Zitat von shmia:
Deine Vorgehensweise gefällt mir gar nicht; zu umständlich.
Zunächst wird ein Varianter Record definiert:
Delphi-Quellcode:
type
T32BitCharField = record
case Integer of
0:
(LongValue:Longint);
1:
(bytes: array[0..3] of char);
end;
Damit kann man zwischen den verschiedenen Darstellungen wechseln:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
x : T32BitCharField;
s : string;
begin
s := adstableAnzahl.AsString; // Feld auslesen
StrLCopy(x.bytes, Pchar(s), 4); // auf "x" kopieren
// x wird verändert
x.LongValue := x.LongValue + 100;
SetString(s, x.bytes, 4);
dstableAnzahl.AsString := s; // Feld zurückschreiben
end;
Leider wird daraus dann nicht 30 75 00 00, sondern 97 30 30 30 hex ( 'ù000' )
Delphi-Quellcode:
s := adstableAnzahl.AsString; // Feld auslesen ______________ Datenbankfeld Integer 30000 => s: ergibt s:= '30000'
StrLCopy(x.bytes, Pchar(s), 4); // auf "x" kopieren__________ x wird zu ==> '3' '0' '0' '0'
// x wird verändert
x.LongValue := x.LongValue + 100;_____________________________ aus '30000' wird ==> 808464535
SetString(s, x.bytes, 4); ________umgewandelt in einen String 'ù0000'
dstableAnzahl.AsString := s; // Feld zurückschreiben ________der dann in das Datenbankfeld geschreiben wird.
Kurt
|
|
Zitat
|