AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein FNC1 Trennzeichen auswerten beim Data Matrix Code
Thema durchsuchen
Ansicht
Themen-Optionen

FNC1 Trennzeichen auswerten beim Data Matrix Code

Ein Thema von Dr. Jack · begonnen am 31. Aug 2019 · letzter Beitrag vom 27. Jun 2022
Antwort Antwort
Dr. Jack

Registriert seit: 17. Mär 2010
78 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#1

FNC1 Trennzeichen auswerten beim Data Matrix Code

  Alt 31. Aug 2019, 15:47
Hallo zusammen,

ich brauche eure Hilfe beim Auswerten des FNC1/GS1 Trennzeichens/Application Identifiers im Data Matrix Code.

Ich scanne den Data Matrix Code eines Artikels in ein Editfeld, aber kann es weder per OnKeyDown
Code:
edit17.text := stringreplace(edit17.Text, #$1D, '#',[rfReplaceAll])
auswerten, noch das Trennzeichen im Editfeld sehen.
Man sieht dann 01000000022420491720020010294420621DC175267703399 im Editfeld. Nehme ich Notepad2 sehe ich 010000000224204917200200102944206(GS)21DC175267703 399 alles korrekt.
Kann mir jemand helfen?

Geändert von Dr. Jack (31. Aug 2019 um 15:52 Uhr)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
982 Beiträge
 
Delphi 6 Professional
 
#2

AW: FNC1 Trennzeichen auswerten beim Data Matrix Code

  Alt 31. Aug 2019, 16:04
Hmm..

Da das $1D kein 'visuelles' Zeichen hat, kommt es beim Edit auch nicht zur Anzeige und somit nicht in den String.

Gehe mal hin und verwende OnKeyDown zur Konvertierung in ein Anzeigbares...

Delphi-Quellcode:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = $1D then Key := Ord('#');
end;
Damit würde das (GS) durch ein Anzeigbares # ersetzt, für später sollte aber ein Zeichen verwendet werden, welches Lt. GS1 Spezifikation nicht in einem dynamischen String vorkommen darf.

Das Notepad2 ersetzt für die Anzeige das Zeichen durch '(GS)' als Platzhalter..
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
Dr. Jack

Registriert seit: 17. Mär 2010
78 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#3

AW: FNC1 Trennzeichen auswerten beim Data Matrix Code

  Alt 31. Aug 2019, 16:52
Code:
  if Key = $1D then Key := Ord('#');
funktioniert leider nicht.

Also das Ersetzen durch die # bekomme ich hin, die Quizfrage ist nur:
Wie kann ich den DM Code vom Scanner direkt in eine Variable schreiben?
Denn scanne ich erst ins Editfeld und kopiere den Text dann in eine Varibale, wird das Trennzeichen nicht mitkopiert (klar, ist ja sicht sichtbar).

Wenn ich aus dem Notepad2 diesen einen DM Code ins Edit rein und wieder raus kopiere, bleibt das GS Trennzeichen erhalten.
Scanne ich den gleichen DM Code per Scanner ein, und kopiere es raus ins Notpad2, sehe ich kein GS Trennzeichen.
Das bedeutet, dass das Edit irgendetwas mit dem Scantext macht, wenn man einscannt. Es aber nicht macht, wenn man kopiert.
Deswegen muss ich das DM Code vom Scanner irgendwie ums Edit herum bekommen, dann verarbeiten und dann erst anzeigen. Und da habe ich gerade eine Denkblockade...
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
982 Beiträge
 
Delphi 6 Professional
 
#4

AW: FNC1 Trennzeichen auswerten beim Data Matrix Code

  Alt 31. Aug 2019, 17:02
Hmm..

Eigentlich sollten alle Chars bei OnKeyDown am Edit ankommen, auch Steuerzeichen, sprich Chars < #32.
Bis Du dir sichen, das auch wiklich $1D vom Scanner gesendet wird ?

Tausche mal OnKeyDown gegen aus:
Delphi-Quellcode:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key < 32 then Key := Ord('#');
end;
Dann sollten alle Steuerzeichen als # ausgegeben werden (auch das abschließende #13)


Alternativer Weg:
Welchen Scanner nutzt Du denn?

Die meisten können umkonfiguriert werden und haben die Option statt des $1d gleich ein 'sichtbares' ASCII-Zeichen für das FNC einzusetzen.
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  Mit Zitat antworten Zitat
Dr. Jack

Registriert seit: 17. Mär 2010
78 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#5

AW: FNC1 Trennzeichen auswerten beim Data Matrix Code

  Alt 31. Aug 2019, 17:19
Das mit dem Umkonfigurieren geht leider nicht, da ich nur Drittanbieter wäre. Die hängen an einem WaWi-System dran...

Was micht etwas wundert:
Code:
if Key < 32 then Key := Ord('#');
ignoriert er komplett. Auch auf der Tastatur kann ich
enter oder alt etc drücken und er zeigt keine # an. Ist sehr dubios...

Ist ein Honeywell ms7580.

Zitat:
Bis Du dir sichen, das auch wiklich $1D vom Scanner gesendet wird ?
jep. ich habe den Artikel ins Notepad2 gescannt. Da wird das Trennzeichen sichtbar.
Es muss am Edit liegen...
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#6

AW: FNC1 Trennzeichen auswerten beim Data Matrix Code

  Alt 31. Aug 2019, 17:43
Nimm ein Memo-Feld oder gar kein Eingabe-Control und lese die Daten per Form.KeyPress ein oder lese die Daten direkt vom USB Device, bereite diese auf wie benötigt und schreibe diese dahin wo benötigt.

Und dann gibt es noch https://docs.microsoft.com/de-de/win...device-support

Geändert von Schokohase (31. Aug 2019 um 17:45 Uhr)
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
982 Beiträge
 
Delphi 6 Professional
 
#7

AW: FNC1 Trennzeichen auswerten beim Data Matrix Code

  Alt 31. Aug 2019, 17:43
Hmm..

Packe Dir mal nen Memo neben das Edit und schreib im OnKeyDown den HexWert des Keys ins Memo, somit solltest Du alle Zeichen erhalten und kannst erkennen, was der Scanner schickt...
Eventuell statt OnKeyDown das OnKeyPress verwenden...
(Ja ich Verwende Delphi 6 Pro und will NICHT wechseln!)
  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 12:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz