![]() |
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!! |
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; |
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 !'); |
Re: Datentypen Umwandeln
Eine Umwandlung geht ganz einfach.
Code:
z.B.:
S := [color=red]Typenbezeichnung([/color]A[color=red])[/color];
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)
|
Re: Datentypen Umwandeln
Delphi-Quellcode:
So macht er es nicht!
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; |
Re: Datentypen Umwandeln
Zitat:
Delphi-Quellcode:
var
s: string; p: PChar; begin // ... s := StrPas(p); end; |
Re: Datentypen Umwandeln
PChar(Edit2.Text) ergibt keine Fehler aber er gibt mir dann meine Fehlermeldung wieder!
Probiere jetzt mal StrPas |
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 |
Re: Datentypen Umwandeln
Delphi-Quellcode:
[Fehler] DbDatesF.pas(93): Inkompatible Typen: 'String' und 'PAnsiChar'
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 '); |
Re: Datentypen Umwandeln
wenn denn so
Delphi-Quellcode:
oder so
p:=Pchar (IBQuery1.FieldByName('Pfad').AsString);
Delphi-Quellcode:
und p in deine shellexecute statt s.p:=strPas(IBQuery1.FieldByName('Pfad').AsString; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 Uhr. |
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