| Autor |
Beitrag |
plague
Hält's aus hier
Beiträge: 12
Ubuntu, Debian, Win XP, Vista
|
Verfasst: 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
      
Beiträge: 1331
Erhaltene Danke: 123
Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
|
Verfasst: 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
      
Beiträge: 616
Erhaltene Danke: 33
Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
|
Verfasst: 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 
Hält's aus hier
Beiträge: 12
Ubuntu, Debian, Win XP, Vista
|
Verfasst: 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
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: 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 
Hält's aus hier
Beiträge: 12
Ubuntu, Debian, Win XP, Vista
|
Verfasst: 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
      
Beiträge: 616
Erhaltene Danke: 33
Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
|
Verfasst: 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 
Hält's aus hier
Beiträge: 12
Ubuntu, Debian, Win XP, Vista
|
Verfasst: 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
      
Beiträge: 616
Erhaltene Danke: 33
Win XP, Vista, 7
Delphi 5 Prof., BDS 2006 Prof. RAD Studio XE
|
Verfasst: Di 24.08.10 23:41
plague hat folgendes geschrieben : | 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 
Hält's aus hier
Beiträge: 12
Ubuntu, Debian, Win XP, Vista
|
Verfasst: 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 
Hält's aus hier
Beiträge: 12
Ubuntu, Debian, Win XP, Vista
|
Verfasst: Do 26.08.10 16:10
kann mir da niemand helfen?
|
|
Gammatester
      
Beiträge: 328
Erhaltene Danke: 101
|
Verfasst: 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
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: 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
      
Beiträge: 2684
Erhaltene Danke: 32
|
Verfasst: 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
      
Beiträge: 1054
Erhaltene Danke: 78
Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
|
Verfasst: 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 
Hält's aus hier
Beiträge: 12
Ubuntu, Debian, Win XP, Vista
|
Verfasst: Mo 06.09.10 16:45
alle sieben Zeichen soll ein Paritätsbit eingefügt werden...
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: 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 
Hält's aus hier
Beiträge: 12
Ubuntu, Debian, Win XP, Vista
|
Verfasst: 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
      
Beiträge: 1207
Erhaltene Danke: 31
Win 10
Delphi 2009 Pro, C++ (Visual Studio)
|
Verfasst: 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
      
Beiträge: 2889
Erhaltene Danke: 13
W2000, XP
D6E, BDS2006A, DevExpress
|
Verfasst: 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:
Delphi-Quelltext 1: 2:
| Var GeradeAnzahlVonEinsen : Array [0..127] of 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.
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.
|
|