Barcode-Scanner-Daten mit WriteFile in Datei schreiben

mannihausw

Grünschnabel
Hallo,

ich schreibe gescannte Daten wie folgt in eine Text-Datei:

C++:
HANDLE hFile;
DWORD Read;
hFile = CreateFile(_T("/test.txt"),GENERIC_WRITE, 0, NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL);

size_t nTextLength = oScanner.getLabelTextLength();				
if (nTextLength>0)
{
      TCHAR* sText = new TCHAR[nTextLength+1];
      oScanner.getLabelText(sText, nTextLength);
      sText[nTextLength] = _T(';');
      sText[nTextLength+1] = _T('\0');					
      WriteFile (hFile,sText,sizeof(TCHAR)*(nTextLength+1),&Read, NULL);
}

Der gescannte Text lautet "test". Danach hänge ich noch ein Semikolon dran und schreibe den String dann in die Datei.

Wenn ich die Datei nun öffne, dann ist abhängig vom Editor den ich verwende zwischen jedem einzelnen Char ein Punkt, ein Viereck oder ein Leerzeichen (bei UltraEdit z.b.
"t.e.s.t"

Kann mir hier jemand was dazu sagen.

mfg
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

ich schreibe gescannte Daten wie folgt in eine Text-Datei:

C++:
HANDLE hFile;
DWORD Read;
hFile = CreateFile(_T("/test.txt"),GENERIC_WRITE, 0, NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL);

size_t nTextLength = oScanner.getLabelTextLength();				
if (nTextLength>0)
{
      TCHAR* sText = new TCHAR[nTextLength+1];
      oScanner.getLabelText(sText, nTextLength);
      sText[nTextLength] = _T(';');
      sText[nTextLength+1] = _T('\0');					
      WriteFile (hFile,sText,sizeof(TCHAR)*(nTextLength+1),&Read, NULL);
}

Der gescannte Text lautet "test". Danach hänge ich noch ein Semikolon dran und schreibe den String dann in die Datei.

Wenn ich die Datei nun öffne, dann ist abhängig vom Editor den ich verwende zwischen jedem einzelnen Char ein Punkt, ein Viereck oder ein Leerzeichen (bei UltraEdit z.b.
"t.e.s.t"

Kann mir hier jemand was dazu sagen.

mfg

Nach meiner Meinung ein Array mit einer Definition wie sText = TCHAR[3] kann man nur die Element von sText[0],sText[1],sText[2] lesen und schreiben.

D.h. Hier gibt's Fehler:

TCHAR* sText = new TCHAR[nTextLength+1];
...
sText[nTextLength+1] = _T('\0');
 
Zuletzt bearbeitet von einem Moderator:
Nach meiner Meinung ein Array mit einer Definition wie sText = TCHAR[3] kann man nur die Element von sText[0],sText[1],sText[2] lesen und schreiben.

D.h. Hier gibt's Fehler:

TCHAR* sText = new TCHAR[nTextLength+1];
...
sText[nTextLength+1] = _T('\0');

Da hast Du recht. Wenn ich den Fehler aber behebe, habe ich immer noch den gleichen Effekt: der gescannte String wird zwar richtig in die Textdatei geschrieben, aber eben leider mit einem Leerzeichen zwischen jedem einzelnen Char ?

mfg
 
Es wäre hilfreich, wenn Du Zeile 9 mit ein Paar Dummietext ersetzest. z.B.
sText = _T("test");

PHP:
   1.      HANDLE hFile;
   2.      DWORD Read;
   3.      hFile = CreateFile(_T("/test.txt"),GENERIC_WRITE, 0, NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL);
   4.       
   5.      size_t nTextLength = oScanner.getLabelTextLength();    
   6.      if (nTextLength>0)
   7.      {
   8.            TCHAR* sText = new TCHAR[nTextLength+1];
   9.            oScanner.getLabelText(sText, nTextLength);
  10.            sText[nTextLength] = _T(';');
  11.            sText[nTextLength+1] = _T('\0');         
  12.            WriteFile (hFile,sText,sizeof(TCHAR)*(nTextLength+1),&Read, NULL);
  13.      }

und schau mal was passiert. Dann kannst Du wissen, woran liegt das Problem.
 
Vielen Dank für den Tipp.
Das ganze hat sich mittlerweile erledigt. Es lag an der Scanner-Methode "getLabelText".
Habe noch eine andere Methode gefunden, die die Daten richtig ausliest und in die Datei schreibt.

Vielen Dank @all

mfg
 
Zurück