Yorumları: 61
Konuları: 13
Kayıt Tarihi: 17-10-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 478
Acemi
30-07-2017, Saat: 01:04
(Son Düzenleme: 30-07-2017, Saat: 01:05, Düzenleyen: dicle_gsm.)
Merhaba arkadaşlar,
Bir string'i byte dizisine çevirmek istiyorum
örnek : str := '00 3F 3D 7E';
VB kodu buldum ama delphi için bulamadım
array = str.Split(New Char() { " "c }).[Select](Function(s As String) Convert.ToByte(s, 16)).ToArray(Of Byte)()
Teşekürler
Yorumları: 1.571
Konuları: 88
Kayıt Tarihi: 09-08-2016
Rep Puanı: 13.829
Üstad
Birçok yöntemi var ama benim ilk aklıma gelen aşağıdaki gibi(Açıklamalar kodun içerisindedir):
var
SL: TStringList;
begin
SL := TStringList.Create;
try
SL.Delimiter := ' ';
SL.StrictDelimiter := True;
SL.DelimitedText := '00 3F 3D 7E';
// Burada SL.Count size kaç adet veriniz olduğunuz verir.
// Sizin için bunların her biri 1 byte data demek.
// SL.Strings[0]
// SL.Strings[1]
//...
// Bu aşamada sizin değerleriniz hexedecimal olduğu için başına $ koyarak işlem yapmalısınız
// örneğin 2. byte'ın değeri için
StrToInt('$' + SL.Strings[1])
finally
SL.Free;
end;
end;
There's no place like 127.0.0.1
Yorumları: 150
Konuları: 1
Kayıt Tarihi: 31-08-2016
Rep Puanı: 5.510
Üstad
31-07-2017, Saat: 14:09
(Son Düzenleme: 31-07-2017, Saat: 14:11, Düzenleyen: QuAdR.)
Kendi yapınıza göre bir fonksiyon yazıp sürekli olarak kullanabilirsiniz.
Örnek olarak;
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TAbyte = array of byte;
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
function StringToByte(str: string): Tabyte;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
aSbyte: TAbyte;
begin
aSbyte := StringToByte('00 3F 3D 7E');
ShowMessage( IntToStr(SizeOf(aSbyte)) + ' Byte çevrildi');
end;
function TForm1.StringToByte(str: string): TAbyte;
var
i,y: integer;
begin
str := StringReplace(str, ' ', '', [rfReplaceAll, rfIgnoreCase]);
SetLength(Result, length(str) div 2);
i := 0;
y := 0;
while i < length(str) do
begin
Result[y] := StrToInt('$' + copy(str, i+1, 2));
Inc(i, 2);
Inc(y);
end;
end;
end.
Ayakkabıyı sefaletten
Çok sonraları tanıdım
Öyle ufuklarda mı olurmuş Allah'ım
Giyer giyer koşardım
Toprağın dostluğundan
Oyuncaklar yaptım çamurdan
Tenimin rengini aldım topraktan
Sen bakma esmerliğim sonradan...
Yorumları: 61
Konuları: 13
Kayıt Tarihi: 17-10-2016
Aktif Kullandığınız Delphi Sürümü:
Rep Puanı: 478
Acemi
Herkese Çok Teşekür ederim cevaplarınız için.