Einzelnen Beitrag anzeigen

Benutzerbild von robinWie
robinWie

Registriert seit: 26. Okt 2005
Ort: Lippcity
404 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Programm läuft nicht auf anderen Computern

  Alt 19. Mär 2006, 16:27
Zitat:
Hallo,
Hört sich ja merkwürdig an, dein Problem.
Kann es sein das du auf irgendwelche Fremdroutinen zugreifst die auf den anderen Rechnern schlicht nicht vorhanden sind?
Ich kann mir schlecht vorstellen das du das nicht machst, da eine Standalone Mediacenteranwendung ziemlich schwer zu realisieren sein dürfte.
Gruß
Ich verwende eine Komponente die in Delphi nicht enthalten ist. Es kann sein das die auf Fremdroutinen zugreift. Meines wissens nach sind, die Routinen für die Komonente, aber in der Bass.dll die sich im Programmordner befindet. Dann verwende ich noch zwei Routinen aus einer "Drive.dll" die ist aber auch im Programmordner. Sonst wüsste ich keine anderen Routinen auf die das Programm zugreift, aber ich schaue mal nach.

Nachtrag:
Ich habe gesucht und keinen Fehler gefunden. Wohlmöglich liegt es an der "Drive.dll" die ich mir mal zusammengetragen habe. Es kann ja sein dass diese ein Fehler enthält. Ihr könnt sie euch ja mal anschauen

Delphi-Quellcode:
library Drive;

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, ExtCtrls, MMSystem;

{$R *.res}

function LockDrive(ADriveLetter: Char; ALock: Boolean): Boolean;
var LWStatus: Hwnd;
    LTemp: Cardinal;
    LPMR32: Boolean;
Const IOCTL_STORAGE_MEDIA_REMOVAL = $2D4804;
begin
  LwStatus := CreateFile(PChar('\\.\' + ADriveLetter + ':'),GENERIC_READ Or GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0);
  LPMR32 := ALock;
  If LwStatus <> INVALID_HANDLE_VALUE Then
  begin
    result := DeviceIoControl(LwStatus, IOCTL_STORAGE_MEDIA_REMOVAL, @LPMR32, sizeof(LPMR32), nil, 0, LTemp, nil);
    CloseHandle(LwStatus);
  end else result := False;
end;

function DriveName(DriveChar: Char): string;
var
  OldErrorMode : Integer;
  NotUsed, VolFlags : DWORD;
  Buf : array [0..MAX_PATH] of Char;
begin
  OldErrorMode := SetErrorMode(SEM_FAILCRITICALERRORS);
  try
    GetVolumeInformation(PChar(DriveChar + ':\'), Buf,
                         sizeof(Buf), nil, NotUsed, VolFlags,
                         nil, 0);
    Result := Format('%s', [Buf]);
  finally
    SetErrorMode(OldErrorMode);
  end;
end;

function GetDiskIn(Drive: Char): Boolean;
var
  ErrorMode: word;
  DriveNumber: Integer;
begin
  {Meldung eines kritischen Systemfehlers vehindern}
  ErrorMode := SetErrorMode(SEM_FailCriticalErrors);
  try
    DriveNumber := Ord(Drive) - 64;
    if DiskSize(DriveNumber) = -1 then
      Result := False
    else
      Result := True;
  finally
    {ErrorMode auf den alten Wert setzen}
    SetErrorMode(ErrorMode);
  end;
end;


function OpenCD(Drive: String): Boolean;
var
  Res: MciError;
  OpenParm: TMCI_Open_Parms;
  Flags: DWORD;
  S: string;
  DeviceID: Word;
begin
  Result := False;
  S := Drive + ':';
  Flags := MCI_OPEN_TYPE or MCI_OPEN_ELEMENT;
  with OpenParm do
  begin
    dwCallback := 0;
    lpstrDeviceType := 'CDAudio';
    lpstrElementName := PChar(S);
  end;
  Res := mciSendCommand(0, MCI_OPEN, Flags, Longint(@OpenParm));
  if Res <> 0 then Exit;
  DeviceID := OpenParm.wDeviceID;
  try
    Res := mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0);
    if Res = 0 then Exit;
    Result := True;
  finally
    mciSendCommand(DeviceID, MCI_CLOSE, Flags, Longint(@OpenParm));
  end;
end;

function CloseCD(Drive: String): Boolean;
var
  Res: MciError;
  OpenParm: TMCI_Open_Parms;
  Flags: DWORD;
  S: string;
  DeviceID: Word;
begin
  Result := False;
  S := Drive + ':';
  Flags := MCI_OPEN_TYPE or MCI_OPEN_ELEMENT;
  with OpenParm do
  begin
    dwCallback := 0;
    lpstrDeviceType := 'CDAudio';
    lpstrElementName := PChar(S);
  end;
  Res := mciSendCommand(0, MCI_OPEN, Flags, Longint(@OpenParm));
// if Res <> then Exit;
  DeviceID := OpenParm.wDeviceID;
  try
    Res := mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);
    if Res = 0 then Exit;
    Result := True;
  finally
    mciSendCommand(DeviceID, MCI_CLOSE, Flags, Longint(@OpenParm));
  end;
end;

exports
  LockDrive name 'LockDrive',
  DriveName name 'DriveName',
  GetDiskIn name 'GetDiskIn',
  CloseCD name 'CloseCD',
  OpenCD name 'OpenCD';
end.
Robin W.
Ein Computer kann (fast) alles.... Man muss es ihm nur beibringen
  Mit Zitat antworten Zitat