Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi PChar nach WideString, etwas komplizierter, brauche Hilfe. (https://www.delphipraxis.net/153471-pchar-nach-widestring-etwas-komplizierter-brauche-hilfe.html)

OrNEC 4. Aug 2010 12:38


PChar nach WideString, etwas komplizierter, brauche Hilfe.
 
Bei mir wird wie folgt ein AudioStream aufgenommen aber seit dem ich die meisten Variablen auf WideString umgewandelt habe funktioniert meine Aufnahme nicht mehr.

Delphi-Quellcode:
BASS_Encode_Start(chan, PChar('lame.exe -h - "' + RecDir + '\' + CCRDir + '\' + ChannelDir + '\' + FileName + '"'), 0, nil, 0);


Also die Variablen RecDir, CCRDir, ChannelDir, FileName sind alles WideStrings.
Hab schon alles mögliche Versucht, aber irgendwie klappt das bei mir nicht.

Hab Delphi 7PE und die TNTUnicode Controls

MarcoWarm 4. Aug 2010 12:42

AW: PChar nach WideString, etwas komplizierter, brauche Hilfe.
 
Versuch mal
Delphi-Quellcode:
BASS_Encode_Start(chan, PChar(String('lame.exe -h - "' + RecDir + '\' + CCRDir + '\' + ChannelDir + '\' + FileName + '"')), 0, nil, 0);

Bernhard Geyer 4. Aug 2010 12:43

AW: PChar nach WideString, etwas komplizierter, brauche Hilfe.
 
Evtl. so?
Delphi-Quellcode:
var
  myString: AnsiString;
begin
  ...
  myString = 'lame.exe -h - "' + RecDir + '\' + CCRDir + '\' + ChannelDir + '\' + FileName + '"'
  BASS_Encode_Start(chan, PChar(myString), 0, nil, 0);
end;

OrNEC 4. Aug 2010 12:47

AW: PChar nach WideString, etwas komplizierter, brauche Hilfe.
 
Ne das will nicht klappen.

mkinzler 4. Aug 2010 12:53

AW: PChar nach WideString, etwas komplizierter, brauche Hilfe.
 
Und das bedeutet?

OrNEC 4. Aug 2010 12:57

AW: PChar nach WideString, etwas komplizierter, brauche Hilfe.
 
Zitat:

Zitat von mkinzler (Beitrag 1039495)
Und das bedeutet?

Schuldigung, hab mich schlecht ausgedruckt, also die Umwandlung scheint ohne Fehler zu durchlaufen, aber es wird kein Signal aufgenommen.

Also so wie ich es verstehe, muss da PChar möglichst ganz weg.

himitsu 4. Aug 2010 13:04

AW: PChar nach WideString, etwas komplizierter, brauche Hilfe.
 
Wenn in diesen Strings Unicodezeichen vorhanden sind, dann werden diese bei dieser Unicode>Ansi-Umwandlung vernichtet.
(solange also BASS_Encode_Start und andere Dinge nicht auch Unicode verstehen, bringt hier Unicode/WideString nichts)

Was will BASS_Encode_Start eigentlich für einen Parameter ... PAnsiChar?

Und gibt es von dieser Prozedur/Funktion BASS_Encode_Start einen Rückgabewert (Result), welchen man auswerten könnte/söllte?

OrNEC 4. Aug 2010 13:08

AW: PChar nach WideString, etwas komplizierter, brauche Hilfe.
 
Zitat:

Zitat von himitsu (Beitrag 1039499)
Wenn in diesen Strings Unicodezeichen vorhanden sind, dann werden diese bei dieser Unicode>Ansi-Umwandlung vernichtet.
(solange also BASS_Encode_Start und andere Dinge nicht auch Unicode verstehen, bringt hier Unicode/WideString nichts)

Was will BASS_Encode_Start eigentlich für einen Parameter ... PAnsiChar?

Genau, bin auch dazu gekommen, PChar muss da weg. Ja BASS_Encode_Start will einen PAnsiChar Parameter.

Zitat:

Und gibt es von dieser Prozedur/Funktion BASS_Encode_Start einen Rückgabewert (Result), welchen man auswerten könnte/söllte?
Das habe ich aus der Hilfe:

Delphi-Quellcode:
HENCODE BASS_Encode_Start(
    DWORD handle,
    char *cmdline,
    DWORD flags,
    ENCODEPROC *proc,
    void *user
);

MarcoWarm 4. Aug 2010 13:11

AW: PChar nach WideString, etwas komplizierter, brauche Hilfe.
 
wie sieht dein Pfad denn aus? Ich meine enthält er Unicode zeichen (russische ;-) ?
Die würden dann zum Fragezeichen bei der Umwandlung und somit der Pfad ungültig.

Бог жив и имеет имя

himitsu 4. Aug 2010 13:12

AW: PChar nach WideString, etwas komplizierter, brauche Hilfe.
 
Delphi-Quellcode:
BASS_Encode_Start(chan, PAnsiChar(AnsiString(...))
Wobei PChar und String in Delphi 7 den PAnsiChar und AnsiString entsprechen.

Ich kenn BASS nicht so direkt, aber irgendwo (in 'ner Hilfe oder so) muß ja geschrieben stehen, was HENCODE für Werte annehmen kann und ob es dazu Fehlercodes o.Ä. gibt.

Gausi 4. Aug 2010 13:17

AW: PChar nach WideString, etwas komplizierter, brauche Hilfe.
 
Die meisten Bass-Routinen ermöglichen es, in den Flags ein BASS_UNICODE unterzubringen. Dann wird der Pfad, den man angebeben hat, von der dll als Unicode-Pfad (also als PWideChar) interpretiert.

OrNEC 4. Aug 2010 13:18

AW: PChar nach WideString, etwas komplizierter, brauche Hilfe.
 
Zitat:

Zitat von MarcoWarm (Beitrag 1039501)
wie sieht dein Pfad denn aus? Ich meine enthält er Unicode zeichen (russische ;-) ?
Die würden dann zum Fragezeichen bei der Umwandlung und somit der Pfad ungültig.

Der Pfad ist ok, alles 10 Fach überprüft und versuche sogar erstmals die Aufnahme in ein Verzeichnis mit lateinischen Buchstaben zu schreiben.

OrNEC 4. Aug 2010 13:19

AW: PChar nach WideString, etwas komplizierter, brauche Hilfe.
 
Zitat:

Zitat von Gausi (Beitrag 1039503)
Die meisten Bass-Routinen ermöglichen es, in den Flags ein BASS_UNICODE unterzubringen. Dann wird der Pfad, den man angebeben hat, von der dll als Unicode-Pfad (also als PWideChar) interpretiert.

Hm... und was heißt das genauer? Auf mein Beispiel bezogen? :gruebel:

Gausi 4. Aug 2010 13:23

AW: PChar nach WideString, etwas komplizierter, brauche Hilfe.
 
Der dritte Parameter in der Prozedur ist Flags. Schau mal in der Hilfe nach, ob da der Wert BASS_UNICODE erlaubt ist. Wenn ja, setz diesen Wert anstelle der 0 ein.
Wenn nicht, weiß ich auch nicht weiter. ;-)

OrNEC 4. Aug 2010 13:26

AW: PChar nach WideString, etwas komplizierter, brauche Hilfe.
 
Zitat:

Zitat von Gausi (Beitrag 1039506)
Der dritte Parameter in der Prozedur ist Flags. Schau mal in der Hilfe nach, ob da der Wert BASS_UNICODE erlaubt ist. Wenn ja, setz diesen Wert anstelle der 0 ein.
Wenn nicht, weiß ich auch nicht weiter. ;-)

Ja das ist erlaubt.

Zitat:

BASS_UNICODE cmdline is in UTF-16 form. Otherwise it is ANSI on Windows and UTF-8 on OSX.
Aber was heißt das jetzt? Verstehe die Zeile nicht.

OrNEC 4. Aug 2010 13:37

AW: PChar nach WideString, etwas komplizierter, brauche Hilfe.
 
ich hab's :bouncing4:

Delphi-Quellcode:
BASS_Encode_Start(chan, Pointer(PWideString('lame.exe -h - "' + RecDir + '\' + CCRDir + '\' + ChannelDir + '\' + FileName + '"')), BASS_UNICODE, nil, nil);


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:46 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