Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Datentypen Umwandeln (https://www.delphipraxis.net/18630-datentypen-umwandeln.html)

thomasvonmuenster1 22. Mär 2004 14:44


Datentypen Umwandeln
 
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text:=IBQuery1.FieldByName('Pfad').AsString;
Label4.Caption:=Edit2.Text;
if ShellExecute(windows.PROCESS_CREATE_THREAD, 'open', 'AcroRd32.exe', Edit2.Text, nil, SW_SHOWDEFAULT)< 33 then showmessage('Anwendung kann nicht geoeffnet werden ');

end;

Ich lese aus einer Interbase DB de Pfad einer PDF Datei aus und lase ihn anzeigen.
Das geht auch aber bei der Übergabe in die ShellExecute Anweisung weigert er sich
und sagt
[Fehler] DbDatesF.pas(90): Inkompatible Typen: 'TCaption' und 'PAnsiChar'
wie kann PAnsiChar in einen String Umwandeln?
Oder geht es anders besser?

Danke Thomas!!

Matze 22. Mär 2004 14:47

Re: Datentypen Umwandeln
 
Hmm, an dem kann's eigentlich nicht liegen, normalerweise sind TCaption und PAnsiChar kompatibel, was folgendes Beispiel zeigt:

Delphi-Quellcode:
var a: PAnsiChar;
begin
  a := 'test';
  Caption := a;
end;

thomasvonmuenster1 22. Mär 2004 14:53

Re: Datentypen Umwandeln
 
Ja das Stimmt.Ich kann es ja auch in ein Label Übergeben.
Aber es startet nicht die PDF Datei.
Manuell geht es aber.Aber nicht aus der Datebank!!!!
if ShellExecute(windows.PROCESS_CREATE_THREAD, 'open', 'AcroRd32.exe', 'c:\\test\test2.pdf', nil, SW_SHOWDEFAULT)< 33 then showmessage('Anwendung kann nicht geöffnet werden !');

himitsu 22. Mär 2004 14:54

Re: Datentypen Umwandeln
 
Eine Umwandlung geht ganz einfach.

Code:
S := [color=red]Typenbezeichnung([/color]A[color=red])[/color];
z.B.:
Delphi-Quellcode:
Var S: String
  A: PAnsiChar;


S := String(A);

Achja, ShellExecute verlangt AnsiChar und nicht String (Edit2.Text = String)
Code:
ShellExecute(windows.PROCESS_CREATE_THREAD, 'open', 'AcroRd32.exe', [color=red]PChar([/color]Edit2.Text[color=red])[/color], nil, SW_SHOWDEFAULT)

thomasvonmuenster1 22. Mär 2004 15:07

Re: Datentypen Umwandeln
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var s: String
    A: PAnsiChar;
begin
 A:=IBQuery1.FieldByName('Pfad').AsString;
 s := String(A);
 Label4.Caption:=Edit2.Text;
 if ShellExecute(windows.PROCESS_CREATE_THREAD, 'open', 'AcroRd32.exe', s, nil, SW_SHOWDEFAULT)< 33 then showmessage('Anwendung kann nicht geoeffnet werden ');
end;
So macht er es nicht!

mirage228 22. Mär 2004 15:08

Re: Datentypen Umwandeln
 
Zitat:

Zitat von himitsu
Delphi-Quellcode:
Var S: String
  A: PAnsiChar;


S := String(A);

Heisst des nicht StrPas in dem Fall ???, also

Delphi-Quellcode:
var
  s: string;
  p: PChar;
begin
  // ...
  s := StrPas(p);
end;

thomasvonmuenster1 22. Mär 2004 15:16

Re: Datentypen Umwandeln
 
PChar(Edit2.Text) ergibt keine Fehler aber er gibt mir dann meine Fehlermeldung wieder!
Probiere jetzt mal StrPas

mirage228 22. Mär 2004 15:20

Re: Datentypen Umwandeln
 
in deinem Fall, muss zu PChar gecastet werden, da ShellExecute() PChar verlangt.

Zu deinem Fehler: Wenn du 'AcroRd32.exe' ohne Programmpfad angibst, sucht Windows die Datei im Programmverzeichnis. Da ist es möglich, dass ein Fehler beim Öffnen auftritt...

mfG
mirage228

thomasvonmuenster1 22. Mär 2004 15:20

Re: Datentypen Umwandeln
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  s: string;
  p: PChar;
begin
  s := StrPas(p);
  s:=IBQuery1.FieldByName('Pfad').AsString;
  if ShellExecute(windows.PROCESS_CREATE_THREAD, 'open', 'AcroRd32.exe', s, nil, SW_SHOWDEFAULT)< 33 then showmessage('Anwendung kann nicht geoeffnet werden ');
[Fehler] DbDatesF.pas(93): Inkompatible Typen: 'String' und 'PAnsiChar'

kiar 22. Mär 2004 15:24

Re: Datentypen Umwandeln
 
wenn denn so
Delphi-Quellcode:
p:=Pchar (IBQuery1.FieldByName('Pfad').AsString);
oder so
Delphi-Quellcode:

p:=strPas(IBQuery1.FieldByName('Pfad').AsString;
und p in deine shellexecute statt s.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz