Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#4

AW: Alte Instanz über CmdLine aktivieren\starten

  Alt 24. Mai 2017, 19:38
Du willst also dein Singleton mehrmals haben ... dann bau einfach den Code für das SingleInstance aus.
Oder bau ein, dass es bei einem bestimmten Parameter nichts prüft.



Zitat:
Delphi-Quellcode:
// Commandline Parameter auswerten
StartParams := '';
ValidExt := false;
for Params := 1 to ParamCount do
  StartParams := StartParams + ' ' + ParamStr(Params);

if length(StartParams) > 0 then
begin
  try
    Ext := Split(VIDEOEXT, ';');
    Extension := Lowercase(ExtractFileExt(StartParams));

    for IntI := 0 to High(Ext) do
    begin
      if (Ext[IntI] = Extension) then
      begin
        ValidExt := true;
        break;
      end;
    end;
  finally
    if ValidExt then
    begin
      RunMediaFile(PWideChar(StartParams));
      SKAERO_InvalidateRect(MainHandle, false);

      ShowWindow(MovieHandle, SW_SHOW);

      btnPlay.Enabled := false;
      btnPause.Enabled := true;
    end;
  end;
end;
Delphi-Quellcode:
// Commandline Parameter auswerten
if ParamCount > 0 then
begin
  ValidExt := false;
  Ext := SplitString(VIDEOEXT, ';');
  Extension := Lowercase(ExtractFileExt(ParamStr(ParamCount))); //Extension := Lowercase(ExtractFileExt(GetCommandLine));

  for IntI := 0 to High(Ext) do
  begin
    if (Ext[IntI] = Extension) then
    begin
      ValidExt := true;
      break;
    end;
  end;
  if ValidExt then
  begin
    RunMediaFile(PChar(GetCommandLine));
    SKAERO_InvalidateRect(MainHandle, false);

    ...
Delphi-Quellcode:
// Commandline Parameter auswerten
if ParamCount > 0 then
begin
  Ext := SplitString(VIDEOEXT, ';');
  Extension := ExtractFileExt(ParamStr(ParamCount)); //Extension := ExtractFileExt(GetCommandLine);
  if AnsiMatchText(Extension, Ext) then
  begin
    RunMediaFile(PChar(GetCommandLine));
    SKAERO_InvalidateRect(MainHandle, false);

    ...
* Delphi-Referenz durchsuchenSplittString
* Delphi-Referenz durchsuchenMatchText
* ParamStr enthält keine " mehr, womit es hoffentlich schön knallt, wenn aus deine.exe "pfad mit lerzeich.en" zu deine.exe pfad mit lerzeich.en wird
* wenn wenn du nur die Endung des letzten Parameters haben willst, warum nimmst du den dann nicht?

200 Byte gespart, 80% der Codezeilen weg und dafür nur bissl nicht ganz funktionierenden und "doppelten" Code entfernt
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (24. Mai 2017 um 19:53 Uhr)
  Mit Zitat antworten Zitat