Autor Beitrag
plague
Hält's aus hier
Beiträge: 12

Ubuntu, Debian, Win XP, Vista

BeitragVerfasst: Di 24.08.10 21:57 
Hallo,

ich bin grad dabei ein Programm zu schreiben das Wörter in den ASCII-code übersetzt und andersrum. Dieses Programm soll dann zum Chatten verwendet werden....
jetzt will ich Paritätsbits an die Datenketten anhängen.....
ich weiß aber einfach nicht, wie ich diese Klasse schreiben soll!?
Kann mir da jemand weiterhelfen? wär super... :-)

Gruß Plague
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Di 24.08.10 22:02 
ein Paar mehr INformationen und Ansätze wären gut.

Anosnten schau dir die Protokolltutorials in der Delphi-Library an.
Blawen
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 616
Erhaltene Danke: 33

Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
BeitragVerfasst: Di 24.08.10 22:19 
Ein paar Hintergrundinfos wären wirklich hilfreich.

Warum willst Du z.B. in den (veralteten) ASCII-Code umwandeln und wieso braucht es ein Paritätsbit (Übertragungsmedium?) ?

_________________
Es kompilert, wir können ausliefern.
Und es kompiliert wieder - das Update ist fertig - bitte 100 Euro ;-)
plague Threadstarter
Hält's aus hier
Beiträge: 12

Ubuntu, Debian, Win XP, Vista

BeitragVerfasst: Di 24.08.10 22:21 
ich hab 4 units - unit 1, uchardual, uWortDual und UZahlDezDual und jetzt möchte ich noch eine Klasse schreiben, die halt Paritätsbits an die verschlüsselten DatenKetten hängen soll, damit der Empfänger überprüfen kann, ob alles richtig ist.....
braucht ihr auch den Quelltext?
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Di 24.08.10 22:35 
naja, hast du dir schon mal durchgelesen was so ein Paritätsbit macht? Dementsprechend würde ich sage du brauchst n paar Bit-Operatoren wie shr, xor und so weiter. Aber wenn du mal bei Google gesucht hättest, wärst du vielleicht auf diese Seite gestoßen die dir eventuell dabei helfen könnte.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
plague Threadstarter
Hält's aus hier
Beiträge: 12

Ubuntu, Debian, Win XP, Vista

BeitragVerfasst: Di 24.08.10 22:40 
ich hab bei google gesucht... so ist das ja nicht....und ich weiß auch, was ein paritätsbit macht!
Die Sache ist nur, dass ich noch nicht lange mit Delphi arbeite, und nicht einfach irgendwelche Sachen aus dem Netz übernehmen will, obwohl ich nicht wirklich weiß, was das jetzt genau macht....

lg plague
Blawen
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 616
Erhaltene Danke: 33

Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
BeitragVerfasst: Di 24.08.10 22:48 
Ich denke, Du hast nur bedingt begriffen, für was ein Prüfbit ist.
Um zu überprüfen, ob der übertragene Text korrekt ist, würde ich eine "Prüfsumme" vorschlagen.

_________________
Es kompilert, wir können ausliefern.
Und es kompiliert wieder - das Update ist fertig - bitte 100 Euro ;-)
plague Threadstarter
Hält's aus hier
Beiträge: 12

Ubuntu, Debian, Win XP, Vista

BeitragVerfasst: Di 24.08.10 22:58 
Es gibt zwei "Arten" von Paritätsbits: OddParity und EvenParity
bei even parity ist es so, dass wenn die Anzahl der 1er gerade ist, die Parität 0 ist, und bei odd parity, wenn die Anzahl der 1er ungerade ist, ist die Parität 0.
Paritätsbits sind dazu da, um Daten zu kontrollieren und korrigieren, damit übertragungsfehler erkannt und verbessert werden können.
Zur Korrektur reicht das Paritätsbit allerdings nicht aus, einen einzelnen Fehler kann man aber erkennen und die Daten dann erneut senden!

noch was?
Blawen
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 616
Erhaltene Danke: 33

Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
BeitragVerfasst: Di 24.08.10 23:41 
user profile iconplague hat folgendes geschrieben Zum zitierten Posting springen:
Es gibt zwei "Arten" von Paritätsbits: OddParity und EvenParity
...
noch was?
???
Was willst Du uns damit genau mitteilen? Für was ein Paritätsbit ist, ist soweit (allen) klar.

Aber willst Du wirklich auf Bit-Ebene prüfen, ob Dein einzelnes Zeichen korrekt ist? Eigentlich empfiehlt sich eher eine Prüfsumme über den gesamten (Teil-) Text.

Zitat:
die halt Paritätsbits an die verschlüsselten DatenKetten hängen soll, damit der Empfänger überprüfen kann, ob alles richtig ist.....
Ein Paritätsbit wird nicht einfach an den Schluss einer x-beliebig langen Datenkette gelegt!
So wie Du es beschreibst, scheint es eher um die (menschliche) Manipulation der Daten zu gehen und nicht um eine allfällige Datenkorruption auf der Übertragungsstrecke.
In diesem Falle würde ich, wie schon erwähnt, eine Prüfsumme (z.B. MD5) vom Text erstellen und diese entsprechend auswerten.
Das Prüfsummenverfahren kannst Du adaptieren (MD5) oder aber auch selber entwickeln.

_________________
Es kompilert, wir können ausliefern.
Und es kompiliert wieder - das Update ist fertig - bitte 100 Euro ;-)
plague Threadstarter
Hält's aus hier
Beiträge: 12

Ubuntu, Debian, Win XP, Vista

BeitragVerfasst: Mi 25.08.10 08:38 
ich wollte nur zeigen, dass ich schon verstanden habe was ein Prüfbit ist.....

die Sache ist..... ich kann mir da leider nicht aussuchen, was ich da mache......ansonsten hätte ich sehr wahrscheinlich das gesamte Programm anders geschrieben...... aber das ist ja jetzt mal egal...... ich soll halt eine Klasse schreiben, die ein Prüfbit an die Daten hängt.....
Die Wörter werden ja in dem Programm erst mal in den ASCII code übersetzt, dann übermittelt, und der Empfänger kann sie dann wieder umwandeln..... da bei der Übertragung aber ja auch Fehler passieren könnten, sollen wir das halt machen......
plague Threadstarter
Hält's aus hier
Beiträge: 12

Ubuntu, Debian, Win XP, Vista

BeitragVerfasst: Do 26.08.10 16:10 
kann mir da niemand helfen?
Gammatester
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 328
Erhaltene Danke: 101



BeitragVerfasst: Do 26.08.10 16:50 
Wie wär's mit dem genauen Wortlaut der Aufgabe? Wie schon gesagt: Paritätsbits an einen Text anhängen ist äh, naja ungewöhnlich. Alte serielle Schnittstellenbausteine haben das auf Hardware-Ebene bei einzelnen Zeichen gemacht. Wie willst Du eigentlich ein einzelnes Bit übertragen?
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Do 26.08.10 16:52 
Naja, wie willst du denn dein Bit speichern? Du könntest es einerseits als Boolean-Speichern (true und false kann man auch als 0 und 1 interpretieren) oder als Byte (kleinere Datengrößen gibts in Delphi nicht). Vl kann man noch einen eigenen Datentyp erstellen, ne art aufzählung, aber ich glaube das sind dann auch nur integer-werte.

Das berechnen weißt du ja eh wie es geht, hab ich dir ja den Link geschickt.

Grob zusammengefasst:

Du nimmst den String. Zerlegst jedes Zeichen in den dazu passenden ASCII-Code und jagst es dann durch die Analysemaschine fürs Paritätsbit. Wenn du mit dem String dann fertig bist, speicherst du das Paritätsbit in einen von dir gewünschten Datentyp.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
delfiphan
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Do 26.08.10 23:15 
Für dich vielleicht overkill aber ideal wäre wenn du die Nachricht signierst und verschlüsselst. Dann hast du Integrität (Unverfälschtheit), Vertraulichkeit und Authentizität (Herkunft). Statt ASCII-code würde ich ein UTF-8 codiertes XML-Dokument nehmen.

Mit entsprechenden Libraries sollte das machbar sein, man muss sich aber ein wenig mit der Thematik auseinandersetzen.
platzwart
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: Fr 27.08.10 01:13 
Ich denke eher, es geht hier um eine Hausaufgabe mit recht konkreter Aufgabenbeschreibung.

Um Missverständnissen vorzubeugen: Willst du von einem ganzen String das Paritätsbit berechnen oder von jedem Zeichen eines Strings?

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
plague Threadstarter
Hält's aus hier
Beiträge: 12

Ubuntu, Debian, Win XP, Vista

BeitragVerfasst: Mo 06.09.10 16:45 
alle sieben Zeichen soll ein Paritätsbit eingefügt werden...
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Mo 06.09.10 18:08 
Du kannst nicht alle 7 Zeichen 1 BIT einfügen. Du kannst maximal Bytes einfügen. Auf die Bits hast du so einfach keinen Zugriff.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
plague Threadstarter
Hält's aus hier
Beiträge: 12

Ubuntu, Debian, Win XP, Vista

BeitragVerfasst: Mo 06.09.10 19:26 
so wurde es uns aber gesagt....
entschuldige, ich verbesser mich... sie sagte: alle sieben Bits ein Paritätsbit ....
sie meinte, man könne das ganze in einer Klasse realisieren, und dort dann halt unter anderem mit der Procedure EvenParity oder OddParity... kommt drauf an, wie mans will
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Mo 06.09.10 21:26 
na dann: einfach den input bitweise durchgehen, jedes bit ausgeben und alle 7 bit ein bit zur parität einfügen.wo ist das problem?
am einfachsten kommst du, wenn du eine klasse schreibst, die am ende einen stream nimmt, den analysiert (7 bits jeweils) und dann in einen internen stream schreibt. am ende wird der interne zurückgegeben oder verfügbar gemacht.

jetzt bist du mit ansätzen dran. wir helfen danach!

Stichworte: SHL x, SHR y, AND 1
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Di 07.09.10 07:48 
Ich glaube, es ist einfacher, mit einer Nachschlageliste zu arbeiten. Dort trägt man für jedes Zeichen einmalig die Anzahl der Einsen, oder gleich Gerade/Ungerade Anzahl ein. Also:
ausblenden Delphi-Quelltext
1:
2:
Var
  GeradeAnzahlVonEinsen : Array [0..127of Boolean;

Nun benötigst Du noch eine Funktion, die Dir für eine Zahl (0..127) TRUE liefert, wenn die Zahl eine gerade Anzahl von Einsen hat und FALSE sonst.
ausblenden Delphi-Quelltext
1:
Function HatGeradeAnzahlVonEinsen(EineZahl : Byte) : Boolean;					

Dann befüllst Du deine Nachschlageliste. Mit ner Schleife usw.

So. Nun hast Du deinen Text, der aus (7 bit) ASCII besteht, also keine Umlaute, Sonderzeichen und so.

Den gehst Du nun Zeichen für Zeichen durch und ersetzt das 8.Bit, das ja eh immer 0 ist, mit dem Inhalt der Nachschlageliste bzw. dem Gegenteil, je nach Odd/Even Parity. -Wuppsfertig-

Tipp 1: Wenn das rechte Bit 1 ist, ist die Zahl ungerade.
Tipp 2: Wenn man eine Zahl durch 2 teilt und den Rest ignoriert, verschiebt man alle Bits gleichzeitig nach rechts. Man kann die Bits auch einfach verschieben (engl: to shift)
Tipp 3: Um zu Prüfen, ob eine Zahl ungerade ist, gibt es eine Delphi-Funktion 'Odd'.

Boah, mehr gibts aber nicht.

_________________
Na denn, dann. Bis dann, denn.