AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

WriteBinary Registry - Datenformat

Ein Thema von TKNU · begonnen am 19. Feb 2019 · letzter Beitrag vom 25. Feb 2019
Antwort Antwort
Seite 1 von 2  1 2   
TKNU

Registriert seit: 27. Nov 2015
12 Beiträge
 
#1

WriteBinary Registry - Datenformat

  Alt 19. Feb 2019, 20:36
Hallo zusammen,

stehe gerade etwas auf dem Schlauch.

In meinem aktuellen Projekt (noch in Delphi 6) werden mit Write- & ReadBinary aus der Unit Registry Druckereigenschaften (DEVMODE) gelesen & geschrieben. Geht auch, funktioniert aber nicht:


Im Regedit sieht der Original - Eintrag z.B. so aus:

43 00 54 00 EA 00 etc.

Wenn ich über WriteBinary schreibe, erhalte ich die folgende Ansicht:

43 54 EA … -> fehlt also jeweils das 2. Byte (0). Wird dann leider auch vom Druckertreiber nicht erkannt.

Was übersehe ich?
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
922 Beiträge
 
Delphi 7 Professional
 
#2

AW: WriteBinary Registry - Datenformat

  Alt 19. Feb 2019, 20:41
Unicode <-> Nicht Unicode?
  Mit Zitat antworten Zitat
TKNU

Registriert seit: 27. Nov 2015
12 Beiträge
 
#3

AW: WriteBinary Registry - Datenformat

  Alt 19. Feb 2019, 20:53
Stimmt - das könnte eine Erklärung sein. Eine Idee, wo ich das umstelle?

Der WriteBinary Befehl in meinem Programm sieht wie folgt aus:

reg.WriteBinaryData(device,printerdevmode,devmodes ize);

wobei printerdevmode vom Typ tdevmode ist.

Problem von Delphi6?
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
922 Beiträge
 
Delphi 7 Professional
 
#4

AW: WriteBinary Registry - Datenformat

  Alt 19. Feb 2019, 21:14
Da wird es jetzt eher schwierig was sinnvolles als Tipp abzugeben.

Delphi würd' ich jetzt erstmal keine Schuld zuweisen, binär ist binär, egal was da drinne steht, ob nun jedes zweite Byte 00 ist oder nicht, sollte bei diesem Datentyp eigentlich eher egal sein.

Den Inhalt des Binärtypes hast Du "irgendwo" her, vom Drucker, über 'ne API ... (keine Ahnung).

Kannst Du diese Werte irgendwie auslesen? Wenn ja, einmal mit Delphi 6 und einmal mit dem aktuellen Delphi?

Diese Werte dann vergleichen, gibt's Unterschiede?

Von was für 'nem Drucker reden wir hier, hat der irgendwas besonderes oder wurde da nur das Datenformat zwischen zwei Treiberversionen, Windowsversionen, werwiewowasauchimmer geändert und Du stolperst hier nur gerade über einen Nebeneffekt, der suggeriert, dass die Ursache bei Delphi 6 liegen könnte?

Geändert von Delphi.Narium (19. Feb 2019 um 22:03 Uhr)
  Mit Zitat antworten Zitat
TKNU

Registriert seit: 27. Nov 2015
12 Beiträge
 
#5

AW: WriteBinary Registry - Datenformat

  Alt 19. Feb 2019, 21:22
Ausgelesen wird hiermit:


gpResult := WinSpool.GetPrinter(
PrinterHandle,
LEVEL_2,
pBuffer,
bytesNeeded,
@bytesNeeded
);
if gpResult then
begin
printerInfo := PPrinterInfo2(pBuffer)^;
move(printerInfo.pDevMode^,printerdevmode,printerI nfo.pDevMode^.dmSize+printerInfo.pDevMode^.dmDrive rExtra);
end;


Es geht darum, bestimmte Druckeigenschaften (doppelseitig etc.) zu setzten und mit einer Arbeitsdatei zusammen zu speichern. Sind Standarddrucker von HP.

Ich muss mal schauen, wo hier Unicode auftaucht und wo nicht.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
922 Beiträge
 
Delphi 7 Professional
 
#6

AW: WriteBinary Registry - Datenformat

  Alt 19. Feb 2019, 21:32
Mach Dir bitte zwei Programmversionen, eine Delphi 6 und eine aktuelles Delphi.

Stimmen die gelesenen Werte überein?
  Mit Zitat antworten Zitat
TKNU

Registriert seit: 27. Nov 2015
12 Beiträge
 
#7

AW: WriteBinary Registry - Datenformat

  Alt 19. Feb 2019, 21:59
Habe erstmal eine lauffähige Version mit Umwegen.

- devmode per copymemory in ein Byte Array kopieren,
- dann dieses in ein 2. Array kopieren, aber in 2er Schritten und die 0 manuell einfügen


Probiere es morgen aber mal in der Fa. mit der aktuellen Version aus. Interessiert mich dann doch
  Mit Zitat antworten Zitat
HolgerX

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

AW: WriteBinary Registry - Datenformat

  Alt 20. Feb 2019, 04:38
Hmm...

Habe erstmal eine lauffähige Version mit Umwegen.

- devmode per copymemory in ein Byte Array kopieren,
- dann dieses in ein 2. Array kopieren, aber in 2er Schritten und die 0 manuell einfügen


Probiere es morgen aber mal in der Fa. mit der aktuellen Version aus. Interessiert mich dann doch

Das ist murks....

D6 verwendet von GetPrinter immer per default die ANSI-Version, welche ein PRINTER_INFO_2 mit Ansi-Strings liefert.
Verwende stattdessen direkt GetPrinterW mit PRINTER_INFO_2W und Du erhälst alle Strings als WideSting, somit incl. des 2. Bytes je Char.
  Mit Zitat antworten Zitat
TKNU

Registriert seit: 27. Nov 2015
12 Beiträge
 
#9

AW: WriteBinary Registry - Datenformat

  Alt 20. Feb 2019, 12:43
Perfekt - hat bestens funktioniert. Den Murks habe ich schon gelöscht
  Mit Zitat antworten Zitat
TKNU

Registriert seit: 27. Nov 2015
12 Beiträge
 
#10

AW: WriteBinary Registry - Datenformat

  Alt 22. Feb 2019, 22:52
In diesem Zusammenhang noch eine Frage:

Gibt es eine Möglichkeit DevmodeA und DevmodeW gegenseitig zu konvertieren?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 23:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf