Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi 2 Byte addieren (https://www.delphipraxis.net/10233-2-byte-addieren.html)

Praktikant 14. Okt 2003 14:34


2 Byte addieren
 
ich habe in einem string 16 bit, dazu möchte ich 16bit aus einem editfeld addieren.
Aber irgendwie addiert das prog falsch :?
Mein Ansatz:
Delphi-Quellcode:
var status:string;

status:=IntToStr(StrToInt(status) and StrToInt(Edit_HandEin.Text));

Grumble 14. Okt 2003 14:43

Re: 2 Byte addieren
 
willst du strings zusammenfuegen?
wenn ja dann muss das in etwa so aussehn:

status:=string+edit.text;

willst du werte (integer) addieren die in strings stehen kannst du das so machen

var status:integer;

status:=strtoint(string)+strintoint(edit.text);

gruesse
grumble

Christian Seehase 14. Okt 2003 15:41

Re: 2 Byte addieren
 
Moin Praktikant,

enthalten die Strings eine Zeichenfolgen 10111101 usw. o.ä.?

Praktikant 14. Okt 2003 15:52

Re: 2 Byte addieren
 
ich will binäre Were arithmetisch addieren.
Wenn ich das untere Bsp. umsetze und aus meinem 'and' ein '+' mache kommt eine exception, von wegen dass mein string '0001001000100111' kein integer wert ist.

Christian Seehase 14. Okt 2003 16:25

Re: 2 Byte addieren
 
Moin Praktikant,

das ist ja auch richtig.
Damit StrToInt funktioniert, muss der String eine Zahl im Dezimal- bzw. Hexadezimalsystem enthalten, da Delphi keine anderen Zahlensysteme unterstützt.
Theoretisch würde es mit einer binär dargestellten Zahl natürlich funktionieren, da die Ziffern 0 und 1 ja auch im Dezimalsystem enthalten sind, aber das Ergebnis wäre natürlich falsch.

So eine Addition musst Du Dir selber schreiben.

z.B. eine Funktion BinToInt, die einen String mit Binärzeichen in einen Integer umwandelt, und die Umkehrung dazu (IntToBin).
Dann könntest Du die Ergebnisse von BinToInt addieren/verknüpfen und das Ergebnis wieder zurückwandeln.

Eine andere Variante:
Du schreibst Dir gleich eine Funktion die zwei Strings mit binären Zahlen entsprechend verküpft und das Ergebnis der Verknüpfung als Funktionswert zurückliefert.
In Deinem Falle eventuell sinnvoller.

Welche Verknüpfung soll's denn werden?

Praktikant 15. Okt 2003 09:20

Re: 2 Byte addieren
 
habe jetzt einen komplett anderen Ansatz genommen, jetzt muss ich keine bits mehr addieren, sondern ich ersetze bestimmte bits im string durch delete und insert.

dazu wieder mal eine frage, jedoch in neuem thread... :hi:

Wormid 15. Okt 2003 11:27

Re: 2 Byte addieren
 
Jetzt wollte ich doch mal sehen, wie es funzt...

Delphi-Quellcode:
function BinaryStringAddition(Bin1, Bin2: String): String;
var i, x, o: Integer;
    Temp: String;
begin
  Result := StringOfChar('0', Max(Length(Bin1), Length(Bin2))); // Ergibnis mit Nullen füllen
  Insert(StringOfChar('0', Length(Result) - Length(Bin1)), Bin1, 1); // Len Bin1 = Len Bin2 
  Insert(StringOfChar('0', Length(Result) - Length(Bin2)), Bin2, 1);
  o := 0;
  for i := Length(Bin1) downto 1 do
  begin
    x := StrToInt(Bin1[i]) + StrToInt(Bin2[i]) + o;
    if x > 1 then
    begin
      o := 1; // Überlauf
      x := 0;
    end
    else o := 0;
    Temp := Trim(IntToStr(x));
    Result[i] := Temp[1];
  end;
  if o > 0 then Insert('1', Result, 1);
end;
... und et viola! Es tut :thuimb:

Gruß

Wormid


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz