Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?
Zum einen würde ich FreeAndNil(FileStream) aufrufen, wenn du später FileStream = NIL prüfst. Meiner Erfahrung nach ist nicht 100% garantiert, das Free auch das Objekt auf NIL setzt.
Dann wie schon vorgeschlagen, die Verwendung von globalen Variablen eingrenzen. Eine Möglichkeit wäre, die procedure StopRec in eine function StopRec zu wandeln (wie schon vorgeschlagen), die dann den Zeiger zurückgibt
Delphi-Quellcode:
StopRec ist eine Methode der Klasse TForm1
function TForm1.StopRec : TFileStream;
[...] Result := FileStream; // und in StatusProc if (FileStream = nil) and (RecordStatus=True) then FileStream := Form1.StopRec; StatusProc ist eine freie Procedure FileStream eine globale Variable Ich muss ehrlich zugeben, das ich immer noch etwas am stochern bin, weil ich doch nicht so gut bin, da 100% durchzusteigen. €: Wenn mich nicht alles täuscht, würde der Methode "StopRec" eher ein Name wie "OpenFileStream" stehen. Zumindest stolper ich immer über den Namen, der nicht zur Aufgabe passt. |
Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?
StatusProc bekommt ja die Daten zum Speichern. Je nachdem, was der User durch vorheriges Knöpfchendrücken gewünscht hat, sollen die Daten gespeichert oder verworfen werden. Also:
Delphi-Quellcode:
Das Erzeugen des FileStreams würde ich beim ButtonClick machen, also so:
procedure StatusProc(buffer: Pointer; len, user: DWORD); stdcall;
begin // Ok, bass.dll hat neue Titel-Informationen bekommen // das sollte man wohl immer machen if (buffer <> nil) and (len = 0) then SendMessage(win, WM_INFO_UPDATE, 8, DWORD(PChar(buffer))) else begin // Daten zum Aufnehmen angekommen If UserWillAufnehmen then begin // Sicherheitsabfrage - ist ein FileStream vorhanden,um die Daten zu speichern? if assigned(FileStream) then begin if (buffer = nil) then FreeAndNil(FileStream); // Aufnahme beenden else FileStream.Write(buffer^, len); // Daten speichern end; end else // nichts machen, user will nicht aufnehmen. end; end;
Delphi-Quellcode:
Und beim Stoppen dann in etwa sowas:
procedure TForm1.ButtonStartAufnahmeClick(Sender: TObject);
begin UserWillAufnehmen := True; FileStream := TFileStream.Create ... // usw., Zeug aus der StopRec end;
Delphi-Quellcode:
procedure TForm1.ButtonStoppAufnahmeClick(Sender: TObject);
begin UserWillAufnehmen := False; FreeAndNil(FileStream); end; |
Re: Fehler: Undefinierter Bezeichner! Wo liegt das Problem?
Wow Gausi, danke :thumb:
Ich teste das mal, melde mich dann. :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:25 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