Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#10

Re: was macht System.IsMultiThread genau?

  Alt 31. Mär 2007, 23:11
Zitat von SirThornberry:
Ob isMultiThread einen Einfluss darauf hat weiß ich nicht, sollte aber nicht wenn es in einem extra Modul steckt.
Und Fehler unterdrücken ist der falsche Ansatz. Eine Zugriffsverletzung kommt schließlich weil an einer falschen Speicheradresse auf Speicher zugegriffen werden soll. Im Schlimmsten fall kommt also mal keine Zugriffsverletzung und Speicher wird an falschen Stellen gelesen oder geschrieben. Es gilt also - Fehler finden!
Jo ist wohl der sinnvollste weg..
Nur konnte bisher keinen finden bei mir läuft das durch ohne zicken.
Vielleicht die compileroption zu stark eingestellt bei den anderen...

Hmm versteh das nicht!

Das wäre vielleicht mein ansatz gewesen.

Delphi-Quellcode:
  procedure LibraryProc(Reason: integer);
  begin
    case (Reason) of
      DLL_PROCESS_ATTACH:
      begin
        BassHandle := LoadLibrary('bass.dll');
        if (BassHandle = 0) then
        begin
          MessageBox(0, 'Unable to load ''bass.dll''' + #13#10 + 'Halting the library process', 'Fatal Error!!', MB_ICONERROR);
          ExitCode := 1;
          Exit;
        end;

        BassFuncs := GetProcAddress(BassHandle, '_');
        if (BassFuncs = nil) then
        begin
          FreeLibrary(BassHandle);
          BassHandle := 0;

          MessageBox(0, 'Unable to load add-on functions from ''bass.dll''' + #13#10 + 'Halting the library process', 'Fatal Error!!', MB_ICONERROR);
          ExitCode := 1;
          Exit;
        end;
        System.IsMultiThread := true;
        Saved8087CW := Default8087CW;
        Set8087CW($133f);
      end;
      DLL_PROCESS_DETACH:
      begin
        if (BassHandle <> 0) then
        begin
          FreeLibrary(BassHandle);
          BassHandle := 0;
        end;

        if (FindPluginsPtr <> nil) then
          StrDispose(FindPluginsPtr);

        Set8087CW(Saved8087CW)
      end;
    end;
  end;
um den Fehler der meistens hier auftritt wie berichtet zu umgehen..
Delphi-Quellcode:
function BASS_VIS_FindPlugins(vispath: PChar; flags: DWORD): PChar; stdcall;
var
  fPath: PChar;
  i, z: Integer;
  Plugins: String;
  DllHandle: THandle;
  VisList: TStringList;
  sSonique, sWinamp, fRecursive: Boolean;

  procedure SearchDir(const dPath: String);
  var
    x: Integer;
    sRec: TSearchRec;
  begin
    if (sSonique) then
    begin
      x := FindFirst(dPath + '*.svp', faAnyFile, sRec);
      while (x = 0) do
      begin
        if (FileExists(dPath + sRec.Name)) then
          VisList.Add(dPath + sRec.Name);

        x := FindNext(sRec); .....
Nur wie gesagt bei mir tritt keiner auf.
Auch unter D7 nicht.

gruss Emil
  Mit Zitat antworten Zitat