AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Widestring Problem

Ein Thema von Seren200018 · begonnen am 2. Nov 2011 · letzter Beitrag vom 2. Nov 2011
Antwort Antwort
Seren200018

Registriert seit: 18. Aug 2007
46 Beiträge
 
#1

Widestring Problem

  Alt 2. Nov 2011, 16:28
Ich habe folgendes Problem.
Ich versuche aus einem C60 der Firma Cypher Instrumens Daten auszulesen (das Anweisungen geben funktioniert).
Die Anweisung wird über eine Funktion namens ReadString als System.Widestring zurück gegeben.
Ich habe nun versucht es über den folgenden Code auszulesen:

Delphi-Quellcode:
procedure Tform1.Getdata(Sender: TObject);
var tempstr : widestring;
begin
  c60.DisableDataReceived;
  setlength(tempstr,67); //Die Nachrichten sind immer 67 Zeichen lang!
  c60.ReadString(tempstr,67);
  c60.EnableDataReceived;
end;
Das Ergebniss ist aber mehr als Sonderbar
'먺먠먱먰먰먰멥먰먠먶먴먰먰멥먰먠먱먰먰먰멥먰먠먱먰먰먰멥먰먠먰먰먍'
Wenn ich das ganze aber nun erst in seine Bitfolge umwandle und dann wieder zurück in Asci kommt das gewünschte Ergebniss raus

P:0 +1.000000e+01 +6.400000e+01 +1.000000e+00 +1.000000e+00 00001 Hat irgendjemand eine Idee?

Vielen Dank schon mal für die Hilfe!

P.s.
Ich habe folgende Char to bit funktionen benutzt
http://www.delphi-treff.de/tipps/obj...iten-mit-bits/

Geändert von Seren200018 ( 2. Nov 2011 um 16:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#2

AW: Widestring Problem

  Alt 2. Nov 2011, 17:21
Zeig doch mal den ganzen Code incl. Umwandlung und Rückwandlung.
Du empfängst wahrscheinlich gar keinen Widestring sondern einen Bitstring.

Gruss
Thomas
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat
Seren200018

Registriert seit: 18. Aug 2007
46 Beiträge
 
#3

AW: Widestring Problem

  Alt 2. Nov 2011, 18:07
Umwandlungsunit

Delphi-Quellcode:
const
B1: Byte = 128;
B2: Byte = 64;
B3: Byte = 32;
B4: Byte = 16;
B5: Byte = 8;
B6: Byte = 4;
B7: Byte = 2;
B8: Byte = 1;

// wird von den Routinen benögtigt
function TestBit(ByteToTest, BitNr: Byte): Boolean;
var
  I: Integer;
begin
  Result := False;
  if BitNr <= 8 then
  begin
    I := ByteToTest shl BitNr;
    Result := ((128 and I) = 128);
  end;
end;

{Diese Funktion wandelt ein Zeichen in die zugehörige Bit-Folge}
function CharToBit(C: Char): string;
var
  A: Byte;
  B: Byte;
begin
  Result := '';
  B := Byte(C);
  for A := 0 to 7 do
    if TestBit(B, A) then
      Result := Result + '1'
    else
      Result := Result + '0';
end;

// String (Länge 8, aus '1' und '0') -> Char
function BitToChar(S: string): Char;
var A, B: byte;
    T: string;
begin
  Result := ' ';
  T := S;

  if length(T) < 8 then
    while length(T) <> 8 do
      T := T + '0';

  if length(T) > 8 then
    delete(T, 9, length(T));

  B := 0;

  for A := 1 to 8 do
    if T[A] = '1then
      case A of
        1: B := B or B1;
        2: B := B or B2;
        3: B := B or B3;
        4: B := B or B4;
        5: B := B or B5;
        6: B := B or B6;
        7: B := B or B7;
        8: B := B or B8;
      end;

  Result := Char(B);
end;

// Byte in String / String in Byte
function ByteToBit(B: Byte): string;
begin
  Result := CharToBit(Char(B));
end;

function BitToByte(S: string): Byte;
begin
  Result := Byte(BitToChar(S));
end;
umgewandelt und rückumgewandelt wird einfach über
Delphi-Quellcode:
for i := 1 to 67
 ausgabe := ausgabe + bittochar(chartobit(eingabe[i]));
Mehr informationen kann ich leider erst morgen geben wenn ich wieder an dem pc arbeite.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Widestring Problem

  Alt 2. Nov 2011, 18:24
Was bitte ist ein "BitString"? Etwa soetwas? "01001111001001..."
Abgesehen von der etwas seltsamen Darstellung, ich würde es durchaus als 8Bit-Wiedergabe eines 16Bit-Strings akzeptieren. Mit dem richtigen Font, könnte da durchaus etwas augenscheinlich sinnvolles erscheinen.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.017 Beiträge
 
Delphi 12 Athens
 
#5

AW: Widestring Problem

  Alt 2. Nov 2011, 19:48
Zitat:
Wenn ich das ganze aber nun erst in seine Bitfolge umwandle und dann wieder zurück in Asci kommt das gewünschte Ergebniss raus
Und dann wunderst du dich?

Wenn es als ASCII/ANSI ankommt, dann kann man in einem Unicodestring nicht viel damit anfangen.

Entweder machst du einen Fehler, oder die Komponente ist nicht wirklich uncodefähig.

Welche Delphiversion nutzt du eigentlich?

Und ich denke du nutzt WideString, aber warum sind die Konvertierungsfunktionen dann als String deklariert?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 2. Nov 2011 um 19:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#6

AW: Widestring Problem

  Alt 2. Nov 2011, 20:17
Was bitte ist ein "BitString"? Etwa soetwas? "01001111001001..."
Abgesehen von der etwas seltsamen Darstellung, ich würde es durchaus als 8Bit-Wiedergabe eines 16Bit-Strings akzeptieren. Mit dem richtigen Font, könnte da durchaus etwas augenscheinlich sinnvolles erscheinen.

Gruß
K-H
Sorry, ich meinte einen Binarystring' also ein String der eigentlich ein Buffer ist.
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 08:45 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