![]() |
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)); |
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 |
Re: 2 Byte addieren
Moin Praktikant,
enthalten die Strings eine Zeichenfolgen 10111101 usw. o.ä.? |
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. |
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? |
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: |
Re: 2 Byte addieren
Jetzt wollte ich doch mal sehen, wie es funzt...
Delphi-Quellcode:
... und et viola! Es tut :thuimb:
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; Gruß Wormid |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz