AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi String mit erweitertem ASCII Zeichensatz verarbeiten

String mit erweitertem ASCII Zeichensatz verarbeiten

Ein Thema von Marc Greene · begonnen am 15. Feb 2006 · letzter Beitrag vom 18. Feb 2006
Antwort Antwort
Marc Greene

Registriert seit: 8. Feb 2006
Ort: Braunschweig
5 Beiträge
 
Delphi 7 Enterprise
 
#1

String mit erweitertem ASCII Zeichensatz verarbeiten

  Alt 15. Feb 2006, 16:09
Schönen guten Tag!

Ich habe hier einen handelsüblichen USB-Barcodescanner, der einen Barcode mit erweitertem ASCII-Zeichensatz liefert (EAN-128). Dazu habe ich mir eine Testanwendung mit Memofeld gebaut und einen Button, der den Scan in die Variable s schaufeln soll. Nach Scannen des Barcodes landet das Ergebnis im Editfeld und wird nach Klick auf einen Button in die Variabnle s befördert

s := mmScan.Text Der Barcode enthält nun aber nicht nur Zahlen, sondern z.B. einen Group Separator D1 (Hex). Der wird natürlich im Edit-Feld nicht angezeigt und auch nicht in die Variable s geschrieben. Auch die folgende Funktion hilft da erwartungsgemäß nicht weiter

Delphi-Quellcode:
function WStrToHex(SourceStr: WideString): WideString;
var
  hexstr: string;
  i : integer;
begin
  result := '';
  hexstr := '';
  for i := 1 to Length(SourceStr) do
    hexstr := hexstr + ' ' +IntToHex(Word(SourceStr[i]), 2);
    Result := hexstr;
end;
Wie komme ich nun an mein D1 (hex) ran?

Gruß aus dem trüben Braunschweig
Carsten
God bless the the curious people
So let's misbehave
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.095 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: String mit erweitertem ASCII Zeichensatz verarbeiten

  Alt 15. Feb 2006, 16:15
Hi,

ich weiß ja nicht was dein Delphi für Strings hat, aber bei mir ist String ein AnsiString, der den erwetierten ASCII-Zeichensatz (oft als ANSI bezeichnet, wenn auch nicht ganz korrekt), speichern kann.

Delphi-Quellcode:
MyString := '12345'$#D1'7890';
MyIndex := Pos(#$D1, MyString);
if MyIndex = 6 then
  ShowMessage('Hurra!');
Mfg
FAlter
Felix Alter
Japanurlaub 2015
  Mit Zitat antworten Zitat
Marc Greene

Registriert seit: 8. Feb 2006
Ort: Braunschweig
5 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: String mit erweitertem ASCII Zeichensatz verarbeiten

  Alt 15. Feb 2006, 16:40
[quote]

Richtig, das mit ANSI und ASCII! Schulligung

Jedoch bekomme ich das Ergebnis aus dem Scan im Memofeld nicht vollständig zu sehen. Statt "12345[D1]67890" steht da nur "1234567890". Ich brauche aber die GANZE Wahrheit...



Gruß, Carsten
God bless the the curious people
So let's misbehave
  Mit Zitat antworten Zitat
Benutzerbild von retnyg
retnyg

Registriert seit: 12. Feb 2005
193 Beiträge
 
#4

Re: String mit erweitertem ASCII Zeichensatz verarbeiten

  Alt 15. Feb 2006, 16:48
memo1.text := stringreplace(mmScan.Text,#$D1,'[D1]',[rfReplaceAll]);
  Mit Zitat antworten Zitat
Marc Greene

Registriert seit: 8. Feb 2006
Ort: Braunschweig
5 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: String mit erweitertem ASCII Zeichensatz verarbeiten

  Alt 16. Feb 2006, 12:28
eine Nacht später...

ich komme Schritt für Schritt weiter...

Das Problem ist offensichtlich die falsche Komponente, die ich verwende. Das Memo- wie auch das Editfeld schluckt einfach das vom Scanner übertragene 1Dh, so dass auch mit

memo1.text := stringreplace(mmScan.Text, #$1D, '[1D]',[rfReplaceAll]); das gewünschte Zeichen nicht ersetzt werden kann - weil es einfach nicht im Memo steht.

Scanne ich direkt in einen Hex-Editor, wie z.B Notepad2 von http://www.flos-freeware.ch
und kopiere ich dann die Zeile in das Memofeld meiner Anwendung, funktioniert stringreplace einwandfrei.

Gibt es ein Hexeditfeld oder -Memo, das ich in Delphi verwenden kann?

Ich leg' mich jetzt erstmal wieder hin

Gruß, MG
God bless the the curious people
So let's misbehave
  Mit Zitat antworten Zitat
Benutzerbild von retnyg
retnyg

Registriert seit: 12. Feb 2005
193 Beiträge
 
#6

Re: String mit erweitertem ASCII Zeichensatz verarbeiten

  Alt 16. Feb 2006, 17:57
ich bin davon ausgegangen, das mmScan.text dein scan-objekt ist...
wie wäre es, wenn du den text der vom scanner kommt einfach in einem string speicherst ?
  Mit Zitat antworten Zitat
Benutzerbild von FAlter
FAlter

Registriert seit: 21. Jul 2004
Ort: Ostfildern
1.095 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#7

Re: String mit erweitertem ASCII Zeichensatz verarbeiten

  Alt 17. Feb 2006, 20:21
Hi,

es kann durchaus sein, dass Win-Komponenten Strings abändern. Bei Memo1.Lines.Text := a und später b := Memo1.Lines.Text bekomme ich nur dann a=b, wenn WordWrap auf false gesetzt ist, sonst enthält b die automatischen Zeilenumbruche. Ich gehe mal davon aus, dass es mit einigen Sonderzeichen ähnlich ist.

Daher: ersetze deinen Text schon, bevor du ihn an eine Komponente sendest.

Mfg
FAlter
Felix Alter
Japanurlaub 2015
  Mit Zitat antworten Zitat
Marc Greene

Registriert seit: 8. Feb 2006
Ort: Braunschweig
5 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: String mit erweitertem ASCII Zeichensatz verarbeiten

  Alt 18. Feb 2006, 13:33
Moin,

Jepp, das isses! Hätte ich einen seriellen Scanner, würde ich den gesendeten Datenstrom auswerten.

Da das ganze auf einem Handheld mit integriertem Scanner läuft, muss ich ein OnKeyDown-Ereignis (o.ä.) in der Komponente auswerten.

Vielen Dank für das Setzen auf's richtige Gleis!

Angenehmes Wochenende!
MG
God bless the the curious people
So let's misbehave
  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 01:52 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