AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

2 Byte addieren

Ein Thema von Praktikant · begonnen am 14. Okt 2003 · letzter Beitrag vom 15. Okt 2003
Antwort Antwort
Praktikant

Registriert seit: 24. Sep 2003
131 Beiträge
 
Delphi 5 Enterprise
 
#1

2 Byte addieren

  Alt 14. Okt 2003, 14:34
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));
  Mit Zitat antworten Zitat
Benutzerbild von Grumble
Grumble

Registriert seit: 19. Mär 2003
Ort: Dresden
203 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: 2 Byte addieren

  Alt 14. Okt 2003, 14:43
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
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: 2 Byte addieren

  Alt 14. Okt 2003, 15:41
Moin Praktikant,

enthalten die Strings eine Zeichenfolgen 10111101 usw. o.ä.?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Praktikant

Registriert seit: 24. Sep 2003
131 Beiträge
 
Delphi 5 Enterprise
 
#4

Re: 2 Byte addieren

  Alt 14. Okt 2003, 15:52
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.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: 2 Byte addieren

  Alt 14. Okt 2003, 16:25
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?
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Praktikant

Registriert seit: 24. Sep 2003
131 Beiträge
 
Delphi 5 Enterprise
 
#6

Re: 2 Byte addieren

  Alt 15. Okt 2003, 09:20
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...
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#7

Re: 2 Byte addieren

  Alt 15. Okt 2003, 11:27
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

Gruß

Wormid
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:56 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