Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Recomandare demontare+instalare ...

CAIET SERVICE PREDEAL II

Internare spital psihiatrie

CM de snooker 2024
 Scot penele dupa montajul tamplar...

Masina de spalat vase si grasimea

Noua lege de acces in paduri

Sunt ouale proaspete?
 Aplicatie invatare limba Germana

Presbiopia - la 43 ani ?

Termen transcriere autovehicul

Cazare Timisoara pe 4-5 zile
 Primele zile ale internetului per...

Ditra 25

Casti USB-C ptr A-54

Aplicatie medicala / asistent med...
 

Copiere valori hex in text

- - - - -
  • Please log in to reply
10 replies to this topic

#1
diaconuliviu

diaconuliviu

    Senior Member

  • Grup: Senior Members
  • Posts: 4,772
  • Înscris: 19.01.2005
Am o iteratie care preia un sir de valori hexa

De ex
i=1 => A0 1C CB 4A
i=2 => A5 CC 1B 22
....
i=100 => A1 11 CF 12



As vrea ca pe toate, linie cu linie sa le scriu intr-un fisier txt.

Nu pot din Delphi, ori incerc sa scriu din byte in txt si da eroare..etc

Am incercat varii functii, majorotatea gasite folosesc CHR(X), transformind hex-ul in litera. Nu asta vreau
Ci transpunerea de ex $A0 in A0 in txt.

Ma ajuta cineva?

Multumesc!

#2
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,601
  • Înscris: 30.07.2003
Adica primesti un sir de octeti si-l vrei pus intr-un fisier. Se poate si in Delphi si in oricare alt limbaj. Tu ce folosesti in mod curent?

#3
diaconuliviu

diaconuliviu

    Senior Member

  • Grup: Senior Members
  • Posts: 4,772
  • Înscris: 19.01.2005
Delphi 7.
Sirul ala il vreau in fisier txt. Sub forma aratata, adica lista de cite 4 octeti pe linie...

Edited by diaconuliviu, 09 May 2017 - 19:03.


#4
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,601
  • Înscris: 30.07.2003
Ia posteaza codul ala de zici ca da eroare! E o scriere banala in fisier pana la urma.

#5
diaconuliviu

diaconuliviu

    Senior Member

  • Grup: Senior Members
  • Posts: 4,772
  • Înscris: 19.01.2005
"IAssignFile(F_Serii, 'Serii.txt');
Append(F_Serii);
sSerie:='';
sSerie:=bin[i];
sSerie:=sSerie+' ';
sSerie:=sSerie+bin[i+$1];

....


sserie=string
bin[i]=byte

eroare de tip de variabila

Incompatible variable string and byte

Edited by diaconuliviu, 09 May 2017 - 19:34.


#6
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,601
  • Înscris: 30.07.2003
sSerie:=sSerie+Chr(bin[i]);

Astfel formezi un string compus din caracterul/octetul fiecarui numar din elementele vectorului bin si scrii la final in fisier:
Writeln(F_Serii, sSerie);

#7
diaconuliviu

diaconuliviu

    Senior Member

  • Grup: Senior Members
  • Posts: 4,772
  • Înscris: 19.01.2005
Si am si spus ca NU asta imi doresc.

Adica chr($30)=0, Chr($31)=1..
Ori eu vreau asa

Fie sirul 30 31 30 31 (BYTES)

Eu il vreau ca atare in Fisier.txt adica pe o linie sa apara
30313031
sau 30 31 30 31 (as prefera acele spatii)

Cu functia Chr in fisier va apare:

0 1 0 1


Am gasit singura functie care mi-a mers dar..fara acele spatii de care spuneam:

function bintostr(const bin: array of byte): string;
const HexSymbols = '0123456789ABCDEF';
var i: integer;
begin
  SetLength(Result, 2*Length(bin));
  for i :=  0 to Length(bin)-1 do begin
    Result[1 + 2*i + 0] := HexSymbols[1 + bin[i] shr 4];
    Result[1 + 2*i + 1] := HexSymbols[1 + bin[i] and $0F];
  end;
end;

Neajunsul e ca scrie de ex bin=AC 12 34 DC => TXT=AC1234DC, FARA SPATII. Dar, na, e bine si asa.

Edited by diaconuliviu, 09 May 2017 - 21:14.


#8
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,601
  • Înscris: 30.07.2003
Ai IntToHex: http://[email protected]

#9
diaconuliviu

diaconuliviu

    Senior Member

  • Grup: Senior Members
  • Posts: 4,772
  • Înscris: 19.01.2005
Multumesc..o sa ma uit si la ea..la prima vedere pare ca te lasa sa pui si acele spatii intre "bytes"

#10
neagu_laurentiu

neagu_laurentiu

    Guru Member

  • Grup: Senior Members
  • Posts: 40,601
  • Înscris: 30.07.2003
"Te lasa" ca i le pui tu dupa fiecare byte.

Insa poti modifica si functia ta sa lase un spatiu:
function bintostr(const bin: array of byte): string;
const HexSymbols = '0123456789ABCDEF';
var i: integer;
begin
  SetLength(Result, 3*Length(bin));
  for i :=  0 to Length(bin)-1 do begin
	Result[1 + 3*i + 0] := HexSymbols[1 + bin[i] shr 4];
	Result[1 + 3*i + 1] := HexSymbols[1 + bin[i] and $0F];
	Result[1 + 3*i + 2] := ' ';
  end;
end;

Edited by neagu_laurentiu, 09 May 2017 - 21:36.


#11
diaconuliviu

diaconuliviu

    Senior Member

  • Grup: Senior Members
  • Posts: 4,772
  • Înscris: 19.01.2005
"Te lasa"=e chiar pus acel   ' ' sau '-'..


Multam pt modificare, e perfect asa...

Anunturi

Chirurgia spinală minim invazivă Chirurgia spinală minim invazivă

Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical.

Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate