Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi combobox.text => PChar (https://www.delphipraxis.net/9638-combobox-text-%3D-pchar.html)

trashar 30. Sep 2003 16:03


combobox.text => PChar
 
Hallo

ich will den combobox1.text in einer variabel speichern, die von dem typen PChar sein muss (für andere funktionen)

wie kann ich das umwandeln???

mfg

Luckie 30. Sep 2003 16:05

Re: combobox.text => PChar
 
Einfacher Cast nach PChar. Oder: pointer(Combobox1.Text) oder @Combobox1.Text[1].

trashar 30. Sep 2003 16:24

Re: combobox.text => PChar
 
hm leider klappen die beiden letzteren möglichkeiten nicht so wie soe sollen
wie ist das den mit dem cast gemeint??

also ich will mir ein paar laufwerkinfos ausgeben lassen

Delphi-Quellcode:
  defaulthdd := 'C:\';
      Label4.caption := DriveType(PChar(defaulthdd));
if Label4.Caption <> 'unbekanntes Laufwerk' then
      begin
          Label6.Caption := inttostr(GetSerialNumber(PChar(defaulthdd)));
          if Label6.Caption = '0' then Label6.Caption := 'Seriennummer unbekannt';
          GetDiskFreeSpaceEx(PChar(defaulthdd), freeCaller, total, nil);
          label8.caption:=IntToStr(freeCaller)+' Bytes';
          label10.caption:= IntToStr(total)+' Bytes';

      end;

(defaulthdd wird als string deklariert)

das geht soweit. dies ist fürs laden des forms

wenn ich allerdings in dem combobox auslesen will (wo man die hdd oder cd laufwerk oder so auswählen kann)

Delphi-Quellcode:
      defaulthdd := Combobox1.Text;
      Label4.caption := DriveType(PChar(defaulthdd));
      if Label4.Caption <> 'unbekanntes Laufwerk' then
      begin
          Label6.Caption := inttostr(GetSerialNumber(PChar(defaulthdd)));
          if Label6.Caption = '0' then Label6.Caption := 'Seriennummer unbekannt';
          GetDiskFreeSpaceEx(PChar(defaulthdd), freeCaller, total, nil);
          label8.caption:=IntToStr(freeCaller)+' Bytes';
          label10.caption:= IntToStr(total)+' Bytes';

      end;
dann wird nur noch der laufwerkstyp richtig angezeigt :(
bei den bytes steht jewalls 0

und bei der serien nr kommt beim laden zwar unbekannt aber beim wechsel kommen total komsiche zahlen die teilweise sogar negativ sind :(

kann mir wer helfen?

mfg

Luckie 30. Sep 2003 17:24

Re: combobox.text => PChar
 
In dem Source hast du doch schon an allen Ecken und Enden Casts nach PChar drin. Zum Beispiel hier:
Delphi-Quellcode:
 ... := DriveType(PChar(defaulthdd));

Christian Seehase 30. Sep 2003 17:29

Re: combobox.text => PChar
 
Moin Trashar,

wie sind denn die Variablen deklariert?
Wie ist GetSerialNumber deklariert?

Eigentlich sollte das so funktionieren.
Das GetDiskFreespaceEx eine Funktion ist, die eine booleschen Wert zurückgibt, könntes Du das mal ausnutzen, und in Fehlerfalle mit
Delphi-Quellcode:
ShowMessage(SysErrorMessage(GetLastError));
mal anzeigen lassen, was schiefgegangen ist.

Wenn Du eh' zwei Routinen hast, die bis auf die erste Zeile identisch sind, bietet es sich an diese als eine Funktion/Methode zusammenzufassen, und dann nur noch den Parameter (das Laufwerk) zu übergeben.


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