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
Seite 1 von 2  1 2      
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, 16: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 16:52 Uhr)
  Mit Zitat antworten Zitat
HolgerX

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

AW: FNC1 Trennzeichen auswerten beim Data Matrix Code

  Alt 31. Aug 2019, 17: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, 17: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
970 Beiträge
 
Delphi 6 Professional
 
#4

AW: FNC1 Trennzeichen auswerten beim Data Matrix Code

  Alt 31. Aug 2019, 18: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, 18: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, 18: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 18:45 Uhr)
  Mit Zitat antworten Zitat
HolgerX

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

AW: FNC1 Trennzeichen auswerten beim Data Matrix Code

  Alt 31. Aug 2019, 18: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
Arkar

Registriert seit: 1. Jul 2015
Ort: Bamberg
11 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: FNC1 Trennzeichen auswerten beim Data Matrix Code

  Alt 26. Jun 2022, 03:46
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...
Hast du ein bsp dafür ich häng an dem selben Problem, ich versuch per OnKeyPress den Char #29 gegen ↔ zu tauschen funtkioniert damit zwar recht gut.
Aber wie kann ich das weiterverarbeiten ^^ für ein bsp wäre ich dankbar, zbsp wie ich den geänderten Text in einen sring packe.

mit var test: string;

test := Edit1.text will er nicht ganza machen damit ichs weiter verarbeiten kann bzw kann folgende Procedure in eine Function geändert werden? Hab es nicht wirklich hinbekommen.

Code:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Sender is TEdit then begin
    case Key of #29:
      begin
        TEdit(Sender).SelText := '&#8596;';
      end;
    end;
  end;
end;
Sven
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: FNC1 Trennzeichen auswerten beim Data Matrix Code

  Alt 26. Jun 2022, 13:15
Aufpassen was selektiert ist
und beim Abfangen von Eingaben nicht vergessen es auch wirklich abzufangen, also Key := 0; // bzw #0 .

Wer Diese sichtbar haben will, braucht einfach nur $2400 dazu addieren (#00 bis #31 / #$1F, zzgl. #32 aka Leerzeichen), was aber nur gut geht, wenn man einen Font hat, wo diese Zeichen enthalten sind.
http://www.unicode.org/charts/ > Technical Symbols > Control Pictures (hab das Gefühl die Seite wird immer "hipper" und unübersichtlicher)
https://en.wikipedia.org/wiki/Unicod...ntrol_pictures



War ↔ nicht die #27 aka ESC ?
scheint aber die 29 gewesen zu sein. Nja, da es eh kein "sichtbares " Zeichen ist, kommt es auf den Zeichensatz drauf an, ob und was es da für ein Zeichen hat.

Mir war so bei Honeywell die #26 gesehen zu haben
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (26. Jun 2022 um 13:28 Uhr)
  Mit Zitat antworten Zitat
Arkar

Registriert seit: 1. Jul 2015
Ort: Bamberg
11 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: FNC1 Trennzeichen auswerten beim Data Matrix Code

  Alt 26. Jun 2022, 15:04
Aufpassen was selektiert ist
und beim Abfangen von Eingaben nicht vergessen es auch wirklich abzufangen, also Key := 0; // bzw #0 .

Wer Diese sichtbar haben will, braucht einfach nur $2400 dazu addieren (#00 bis #31 / #$1F, zzgl. #32 aka Leerzeichen), was aber nur gut geht, wenn man einen Font hat, wo diese Zeichen enthalten sind.
http://www.unicode.org/charts/ > Technical Symbols > Control Pictures (hab das Gefühl die Seite wird immer "hipper" und unübersichtlicher)
https://en.wikipedia.org/wiki/Unicod...ntrol_pictures



War ↔ nicht die #27 aka ESC ?
scheint aber die 29 gewesen zu sein. Nja, da es eh kein "sichtbares " Zeichen ist, kommt es auf den Zeichensatz drauf an, ob und was es da für ein Zeichen hat.

Mir war so bei Honeywell die #26 gesehen zu haben
ignorier mal ↔ das ist einfach nurn Zeichen das gegen GS also #29 ersetzt wird ^^ kann auch jedes andere sein. Ich hab schon angefragt ob die nicht einfach mal den Barcode umstellen und das darüber ändern. Kam aber bisher keine antwort. Mein eigener Scanner kein HoneyWell isn billig teil Tera erzeugt das zeichen von selbst ↔ aber auch nur wenn er am Kabel hängt per wifi sendet er das GS unsichtbar.

Wie ist das gemeint?
> Aufpassen was selektiert ist und beim Abfangen von Eingaben nicht vergessen es auch wirklich abzufangen, also Key := 0; // bzw #0
Sven

Geändert von Arkar (26. Jun 2022 um 15:10 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:24 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