AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

PAnsiChar konvertierung schlägt fehl

Ein Thema von hedie · begonnen am 20. Jan 2016 · letzter Beitrag vom 20. Jan 2016
Antwort Antwort
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#1

PAnsiChar konvertierung schlägt fehl

  Alt 20. Jan 2016, 20:41
Hallo zusammen

Ich versuche dieses Projekt in meinem zu integrieren:
http://www.delphipraxis.net/169271-pdf-image.html

Ich verwende Delphi XE7 Starter und habe deshalb auch das Problem mit dem PAnsiChar und PChar gehabt.
Nach einigem Anpassen gings schon fast.

Nun habe ich das Problem, dass diese Codezeile:

Delphi-Quellcode:
var argv:PPAnsiChar;
...
argv[0] := PAnsiChar(paramstr(0));
Ergibt nur "F" (meine Applikation liegt auf F:/...
Jedoch ergibt

argv[1]:=PAnsiChar('-sDEVICE=jpeg') Das korrekte. Nämlich "-sDEVICE=jpeg"

Das selbe Problem hier:
Delphi-Quellcode:
argv[4+i]:=PAnsiChar(
        '-sOutputFile=' + ExportPath + '\' + ExportFile + '%03d.' + typ
      );
Anbei ein Screenshot in welchem man links die Variablen sehen kann.
Kann mir hier jemand weiterhelfen?

Danke schonmal
Miniaturansicht angehängter Grafiken
pansichar.png  
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.830 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: PAnsiChar konvertierung schlägt fehl

  Alt 20. Jan 2016, 20:49
Es handelt sich hierbei um keine Konvertierung, sondern eine Interpretation: Betrachte das folgende als eine Zeiger auf ein AnsiChar.
Markus Kinzler
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#3

AW: PAnsiChar konvertierung schlägt fehl

  Alt 20. Jan 2016, 20:57
Vielen Dank für deine Antwort.
Nun dann müsste das ja eigentlich so funktionieren.
Oder übersehe ich da was?
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.830 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: PAnsiChar konvertierung schlägt fehl

  Alt 20. Jan 2016, 21:04
Ja. Bei UTF16 hat jedes Zeichen 16 Bit. Bei Zeichen, die es auch bei ANSI gibt ist das 2. Byte dann #0, was bei einem AnsiString das Stringende bedeutet.
Markus Kinzler
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#5

AW: PAnsiChar konvertierung schlägt fehl

  Alt 20. Jan 2016, 21:09
Ja. Bei UTF16 hat jedes Zeichen 16 Bit. Bei Zeichen, die es auch bei ANSI gibt ist das 2. Byte dann #0, was bei einem AnsiString das Stringende bedeutet.
Verstehe ich.
Aber leider weiss ich noch nicht wass es in meinem Fall für einen Workaround braucht.
Leider ist mein Wissen dahingehend noch zu wenig gewachsen.

PPansiChar ist übrigens ein Array of PAnsiChar.
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch

Geändert von hedie (20. Jan 2016 um 21:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
40.494 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: PAnsiChar konvertierung schlägt fehl

  Alt 20. Jan 2016, 21:12
Als Ziel ein PWideChar verwenden (wenn möglich)
oder den String erst in einen AnsiString und dann PAnsiChar umwandeln?

Vorallem niemals ANSI mit Unicode mischen, und gefälligst auf deinen Compilier hören, wenn er dir das auch laut und deutlich sagt.
String -> PChar
AnsiString -> PAnsiChar
WideString/UnicodeString -> PWideChar
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.830 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: PAnsiChar konvertierung schlägt fehl

  Alt 20. Jan 2016, 21:20
Wenn man sicher sein kann, dass keine wirklichen 16Bit Zeichen auftreten könnte man jeweils nur das 1. Byte verwenden oder man geht den weg über UTF8.

Versuch es mal mit:

Delphi-Quellcode:
var argv:PPAnsiChar;
...
argv[0] := PAnsiChar( Utf8Encode(paramstr(0)));
Markus Kinzler
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#8

AW: PAnsiChar konvertierung schlägt fehl

  Alt 20. Jan 2016, 21:21
Vielen Dank für eure Antworten.

Ich habe nun alles auf PWideChar geändert.
Nun funktioniert mal dieses eine Problem.

Nun bekomme ich jedoch den Error "**** Unable to open the display device, quitting."

Das ist jedoch eine neue Baustelle...

Danke euch!
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  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 23:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf