xsharp.eu • Array mit Prozessen - Page 3
Page 3 of 5

Delegates

Posted: Fri Dec 20, 2019 7:05 am
by lagraf
Hallo Wolfgang,
den Rückgabewert logic hatte ich schon eingebaut, trotzdem kommt der Fehler!

Delegates

Posted: Fri Dec 20, 2019 7:09 am
by wriedmann
Hallo Franz,

bei mir kompiliert das schon so:
EnumWindows.png
EnumWindows.png (124.66 KiB) Viewed 302 times
Wolfgang

Delegates

Posted: Fri Dec 20, 2019 8:48 am
by lagraf
Hi Wolfgang,
du hast hier
//STATIC LOCAL oEnumWindowsProcDelegate := EnumWindowsProc AS EnumWindowsProc_Delegate
auskommentiert, was im Beispiel nicht war. Damit ist 1 Fehler weniger, aber einer bleibt trotzdem noch übrig!
Wolfgang.jpg
Wolfgang.jpg (131.3 KiB) Viewed 302 times

Delegates

Posted: Fri Dec 20, 2019 8:58 am
by SHirsch
Hallo

der DELEGATE hat eine andere Signatur als die FUNCTION
Der zweite Parameter ist im DELEGATE ARRAY und in der FUNCTION IntPtr.

Diese müssen gleich sein. Bei Wolfgang ist das IntPtr

Stefan

Delegates

Posted: Fri Dec 20, 2019 9:01 am
by Karl-Heinz
Jungs,

Ich krieg das nur zum laufen wenn ich die Signature anpasse:

Code: Select all

DELEGATE EnumWindowsProc_delegate( hWnd AS PTR, aWindows AS IntPtr ) AS LOGIC // anstelle "aWindows AS ARRAY"
Gruß
Karl-Heinz

Delegates

Posted: Fri Dec 20, 2019 9:05 am
by Karl-Heinz
SHirsch wrote:Hallo

der DELEGATE hat eine andere Signatur als die FUNCTION
Der zweite Parameter ist im DELEGATE ARRAY und in der FUNCTION IntPtr.

Diese müssen gleich sein. Bei Wolfgang ist das IntPtr

Stefan
Fast zeitgleich - als ob es abgesprochen gewesen wäre ;-)

Delegates

Posted: Fri Dec 20, 2019 9:07 am
by FFF
Was vielleicht damit zusammenhängt: (MS) "Nach Instanziierung eines Delegaten können Sie die Instanz mit einer beliebigen Methode verknüpfen, die eine kompatible Signatur und einen kompatiblen Rückgabetyp aufweist."
Ich lese mal kompatibel = "gleich" - also nicht nur Param-typen sondern eben auch der Rückgabetyp muß übereinstimmen...

Delegates

Posted: Fri Dec 20, 2019 9:17 am
by SHirsch
Ich lese mal kompatibel = "gleich" - also nicht nur Param-typen sondern eben auch der Rückgabetyp muß übereinstimmen...
korrekt

Delegates

Posted: Fri Dec 20, 2019 9:22 am
by lagraf
Hallo Leute,
ihr habt Recht, den 2. Parameter beim DELEGATE habe ich glatt überlesen. Ich habe den Code aus Wolfgangs früherem Posting übernommen und da war der Parameter noch ARRAY!
Jetzt klappt es!

Delegates

Posted: Fri Dec 20, 2019 10:20 am
by lagraf
Hi Karl
ich hab mal mit meinen nicht vorhandenen C# Kenntnissen versucht, die FileSystemWatcher Class umzusetzen, was natürlich nicht gelungen ist :(

Code: Select all

USING System
USING System.IO
USING System.Text
USING System.Threading
 
CLASS FileInputMonitor
	PROTECT oFileSystemWatcher AS FileSystemWatcher
	PROTECT cfolderToWatchFor := "C:TMP" AS STRING
 
	CONSTRUCTOR()
 
		oFileSystemWatcher := FileSystemWatcher{cfolderToWatchFor}
		oFileSystemWatcher.EnableRaisingEvents := TRUE
 
		// Instruct the file system watcher to call the FileCreated method
		// when there are files created at the folder.
		oFileSystemWatcher.Created += FileSystemEventHandler{FileCreated}

		RETURN SELF
		 
	METHOD FileCreated(osender AS OBJECT, e AS FileSystemEventArgs) AS VOID PASCAL

		IF Right(Upper(e.Name),4) == ".PRN"
			ProcessFile(e.FullPath)
		ENDIF
		
		RETURN SELF

	METHOD ProcessFile(fileName AS STRING) AS VOID PASCAL
		LOCAL inputFileStream AS FileStream
		LOCAL reader AS StreamReader

		DO WHILE TRUE 
			TRY
				inputFileStream := FileStream{fileName, FileMode.Open, FileAccess.ReadWrite}
				reader := StreamReader{inputFileStream}
				Console.WriteLine(reader.ReadToEnd())
				// Break out from the endless loop
				BREAK

			CATCH e AS exception
				// Sleep for 3 seconds before trying
				Thread.Sleep(3000)

			END TRY
		ENDDO

		RETURN SELF

END CLASS
Es kommen Fehler wie
XS0246: Type or namespace 'oFileSystemWatcher" could not be found
XS0118: 'e' and 'reader' is a variable but is declared like a type

Was mache ich da falsch?