Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   BOOLEAN? Programm Problem! (https://www.delphipraxis.net/60471-boolean-programm-problem.html)

DaddyRe 7. Jan 2006 12:22


BOOLEAN? Programm Problem!
 
Ich hoffe mal die Kategorie die ich gewählt habe stimmt ;-)

Also ich ahbe ein Programm geschrieben udn habe ein Kleines Problem:
ICh habe eine Abfrage der Laufwerksnamen gemacht sprich verschiedene Radiobuttons zb. mit der Caption "C:" wird dann ergänzt durch C: Lokaler Datenträger.
Soweit funktioniert jedoch alles. Dann habe ich noch einen Button auf meine Form gesetzt und ihn per if abfrage mit den Radiobuttons verknüpft.
Ich mochte jedoch sobald die Caption zb. "C: Leer" eine messagebox anzeigen lassen. Wie kann ich das auch noch einfügen in meinen code?

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
  begin
if Radiobutton4.Checked then Shellexecute(handle, 'open', 'U:', '', nil, SW_SHOW);

if Radiobutton8.Checked then Shellexecute(handle, 'open', 'T:', '', nil, SW_SHOW);

if Radiobutton6.Checked then Shellexecute(handle, 'open', 'D:', '', nil, SW_SHOW);

if Radiobutton7.Checked then Shellexecute(handle, 'open', 'E:', '', nil, SW_SHOW);

if Radiobutton5.Caption := 'Leer' then Application.MessageBox('Das is ne Messagebox!','aloa he',MB_OK);
else begin if Radiobutton5.Checked then Shellexecute(handle, 'open', 'C:', '', nil, SW_SHOW)
Hier habe ich das schon mal ausprobiert funktioniert aber leider nicht
Er sagt der Ausdruck muss boolean sein ich weiß nur leider nciht wie ich boolean verwende:-(
Vlt könnte mir das einer von euch erklären!

Danke Mfg DaddyRe

jfheins 7. Jan 2006 12:25

Re: BOOLEAN? Programm Problem!
 
Delphi-Quellcode:
if Radiobutton5.Caption := 'Leer' then
Du musst hier statt := (Zuweisungsoperator) den Vergleichsoperator = verwenden ;)

DaddyRe 7. Jan 2006 12:26

Re: BOOLEAN? Programm Problem!
 
ahhh danke :-)

DaddyRe 7. Jan 2006 12:30

Re: BOOLEAN? Programm Problem!
 
....noch ein problem :-(

Der code stimmt soweit nur wenn ich dann C: anklcike und auf den button open drive klicke kommt die messagebox auch obwohl C: einen Namen hat und nciht leer ist, das kommt jedoch daher das U: Leer ist!

Wie kann cih diese befehle voneinander trennen?

...bissel komishc beschrieben *duckundwegrenn*

Mfg DaddyRe

Remote1 7. Jan 2006 13:19

Re: BOOLEAN? Programm Problem!
 
ich hab dein problem zwar net ganz verstanden, aber anscheinend brauchst du alle laufwerkbuchstaben, laufwerktyp und bezeichnungen eines rechners
evtl hilft dir der folgende code weiter (hab ich grad in meiner hilfe gefunden):

Delphi-Quellcode:
Laufwerke auf einem Computer ermitteln
 { 
Fügt all fixen Laufwerke in Combobox1 ein.
Um z.B alle CD-Rom Laufwerke zu ermitteln,
einfach DRIVE_CDROM anstatt die Konstante DRIVE_FIXED nehmen.


procedure List_Drives;
const
DRIVE_UNKNOWN = 0;
DRIVE_NO_ROOT_DIR = 1;
DRIVE_REMOVABLE = 2;
DRIVE_FIXED = 3;
DRIVE_REMOTE = 4;
DRIVE_CDROM = 5;
DRIVE_RAMDISK = 6;
var
r: LongWord;
Drives: array[0..128] of char;
pDrive: PChar;
begin
r := GetLogicalDriveStrings(SizeOf(Drives), Drives);
if r = 0 then Exit;
if r > SizeOf(Drives) then
raise Exception.Create(SysErrorMessage(ERROR_OUTOFMEMORY));
pDrive := Drives;
while pDrive^ <> #0 do
begin
if GetDriveType(pDrive) = DRIVE_FIXED then
Form1.ComboBox1.Items.Add(pDrive);
Inc(pDrive, 4);
end;
end;

//Den Laufwerksnamen ermitteln

function GetVolumeName(DriveLetter: Char): string;
var
dummy: DWORD;
buffer: array[0..MAX_PATH] of Char;
oldmode: LongInt;
begin
oldmode := SetErrorMode(SEM_FAILCRITICALERRORS);
try
GetVolumeInformation(PChar(DriveLetter + ':\'),
buffer,
SizeOf(buffer),
nil,
dummy,
dummy,
nil,
0);
Result := StrPas(buffer);
finally
SetErrorMode(oldmode);
end;
end;

// Beispiel:

procedure TForm1.Button1Click(Sender: TObject);
begin
Caption := GetVolumeName('c');
end;


//Den Laufwerkstyp feststellen

procedure TForm1.Button1Click(Sender: TObject);
var
typ: Integer;
s: string;
begin
s := 'C:\';
typ := GetDriveType(PChar(s));
if Typ <> 0 then case typ of
DRIVE_REMOVABLE:
begin
ShowMessage('Drive Removable / Diskette');
end;
DRIVE_FIXED:
begin
ShowMessage('Drive fixed / Festplatte');
end;
DRIVE_CDROM:
begin
ShowMessage('CD ROM Drive');
end;
DRIVE_RAMDISK:
begin
ShowMessage('RAM Drive');
end;
DRIVE_REMOTE:
begin
ShowMessage('Remote Drive / Netzlaufwerk');
end;
end;
end;

DaddyRe 7. Jan 2006 15:21

Re: BOOLEAN? Programm Problem!
 
danke
aber ich habe einen anderen coder der etwas kürzer ist wenn ihr wollt poste ich ihn euhc meldet euch einfach...

Remote1 8. Jan 2006 17:02

Re: BOOLEAN? Programm Problem!
 
dann poste mal, is immer gut was neues zu sehn (den oberen code kann man natürlich noch zusammenfassen, is nur auseinandergenommen falls man nicht alles braucht, zb, wenn man nur lauferksbuchstaben brauch)

DaddyRe 8. Jan 2006 19:27

Re: BOOLEAN? Programm Problem!
 
So,


Delphi-Quellcode:
function GetVolumeName(DriveLetter: Char): string;
var
  dummy: DWORD;
  buffer: array[0..MAX_PATH] of Char;
  oldmode: LongInt;
begin
  oldmode := SetErrorMode(SEM_FAILCRITICALERRORS);
  try
    GetVolumeInformation(PChar(DriveLetter + ':\'),
                         buffer,
                         SizeOf(buffer),
                         nil,
                         dummy,
                         dummy,
                         nil,
                         0);
    Result := StrPas(buffer);
  finally
    SetErrorMode(oldmode);
  end;
end;

// Example, Beispiel:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption := GetVolumeName('c');
end;

Remote1 9. Jan 2006 17:29

Re: BOOLEAN? Programm Problem!
 
@DaddyRe
falls es dir nioch nicht aufgefallen ist, du hast genau den gleichen code wie ich gepostet
ich hab halt nur noch ne funktion dabei, welche den Laufwerkstyp feststellt und dann noch eine um alle laufwerkbuchstaben zu erahlten (sind halt 3 fkt, wenn man nur eine braucht, dann nimmt man auch nur eine)


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