In delphi heb je een functie 'integer'. Ik kan deze echter niet in de documentatie of op google vinden. Wat doet deze functie en wat is de vervanger hiervoor in c#?
Weet je zeker dat het niet gewoon een cast is naar het type integer? In dat geval zou je in c# Convert.ToInt32 kunnen gebruiken.
Dit is wel een beetje een magere topicstart, en een vraag waar je zelf het antwoord kunt op vinden...
Ben je zeker dat je een functie 'Integer' hebt ? Hoe ben je dat zo zeker ?
Je kan ze niet in de documentatie vinden, dus denk ik dat ze toch niet zal bestaan. Ik ben in ieder geval niet bekend met een dergelijke functie...
Toon eens een stukje code waar die 'functie' in gebruikt wordt.
Ben je zeker dat je een functie 'Integer' hebt ? Hoe ben je dat zo zeker ?
Je kan ze niet in de documentatie vinden, dus denk ik dat ze toch niet zal bestaan. Ik ben in ieder geval niet bekend met een dergelijke functie...
Toon eens een stukje code waar die 'functie' in gebruikt wordt.
https://fgheysels.github.io/
Delphi:
1
2
3
4
5
| Text:=StrAlloc(len + 1); if Assigned(Text) then try CompleteLog:=TStringList.Create; Len:=SendMessage(ETLogHandle, WM_GETTEXT, len + 1, Integer(Text)); |
En wat is een vervanger voor stralloc?
// Deze kan ik wel in de docu vinden maar het lijkt er wel op dat het functies zijn voor operaties op een byte array?
Function Description
StrAlloc Allocates a character buffer of a given size on the heap.
[ Voor 32% gewijzigd door StM op 16-10-2006 09:04 . Reden: typo's ]
Sorry hoor, maar dit kan je echt wel met een beetje moeite zelf gaan doen.
Die Integer functie zoals jij het noemt, is een cast die gebeurt naar een Integer. Kijk eens in de C# doc's hoe je in C# kunt casten. Je kan Converten en casten in C#:
Met StrAlloc alloceer je een stuk geheugen op de heap. Kijk eens van welk type Text is.
Die Integer functie zoals jij het noemt, is een cast die gebeurt naar een Integer. Kijk eens in de C# doc's hoe je in C# kunt casten. Je kan Converten en casten in C#:
code:
1
2
| int i = Convert.ToInt32 (str); int j = (int)str; |
Met StrAlloc alloceer je een stuk geheugen op de heap. Kijk eens van welk type Text is.
https://fgheysels.github.io/
Ik probeer dit namenlijk tot een stukje c# om te vormen. Ik ben nu zover gekomen:
Hij geeft het juiste aantal tekens weer maar als ik gettext doet blijft hij leeg...
C#:
1
2
3
4
5
6
7
8
9
10
11
| int len = Win32.SendMessage(read, Win32.WM_GETTEXTLENGTH, 0, 0); Console.WriteLine(len); char[] buff = new char[len + 1]; Win32.SendMessage(read, Win32.WM_GETTEXT, len + 1, buff.GetHashCode()); Console.WriteLine(buff); Win32.SendMessage(read, Win32.WM_SETTEXT, 0, 0); |
Hij geeft het juiste aantal tekens weer maar als ik gettext doet blijft hij leeg...
[ Voor 9% gewijzigd door StM op 16-10-2006 10:45 ]
buff is een pointer. De cast naar een int is er alleen om van de pointer een integer te maken zodat het adres van de pointer meegegeven wordt met de SendMessage functie.
De GetHashCode levert een redelijk unieke code op maar is niet hetzelfde als het adres van buff.
De GetHashCode levert een redelijk unieke code op maar is niet hetzelfde als het adres van buff.
"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney
En hoe kan je dan aan dat adres komen? Als ik het zo begrijp via een pointer?
offtopic:
Dit is mn eerste c# app dus verwacht aub niet dat ik alle termen al ken
Dit is mn eerste c# app dus verwacht aub niet dat ik alle termen al ken
Even zoeken naar "C# pointers" op google levert o.a. het volgende op: http://www.softsteel.co.uk/tutorials/cSharp/lesson5.html
Let er wel op dat werken met pointers automatisch betekent dat je met unsafe code bezig bent.
Overigens zijn pointers niet een typisch C# iets maar eerder afkomstig vanuit C/C++.
Overigens lijkt het me verstandig om het om te schrijven naar save native C# code. Daarbij hoef je je geen zorgen te maken over pointers e.d. omdat in het C# framework er gewoon methods zijn om o.a. de lengte van een stuk tekst en het stuk tekst zelf direct op te kunnen vragen.
Let er wel op dat werken met pointers automatisch betekent dat je met unsafe code bezig bent.
Overigens zijn pointers niet een typisch C# iets maar eerder afkomstig vanuit C/C++.
Overigens lijkt het me verstandig om het om te schrijven naar save native C# code. Daarbij hoef je je geen zorgen te maken over pointers e.d. omdat in het C# framework er gewoon methods zijn om o.a. de lengte van een stuk tekst en het stuk tekst zelf direct op te kunnen vragen.
offtopic:
Heb ook gelijk je topic titel even aangepast
Heb ook gelijk je topic titel even aangepast
[ Voor 31% gewijzigd door Creepy op 16-10-2006 14:08 ]
"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney
// tnx voor de titel fix
Als ik dat linkje goed begrepen had, zou dit het moeten zijn.
Echter: Error 1 Cannot implicitly convert type 'char[]' to 'char*' C:\Documents and Settings\J. M. Bogaard\Mijn documenten\Visual Studio 2005\Projects\et_pipe\et_pipe\Program.cs 374 34 et_pipe
C#:
1
2
3
4
5
6
7
8
9
10
11
| int len = Win32.SendMessage(read, Win32.WM_GETTEXTLENGTH, 0, 0); Console.WriteLine(len); char* buff = new char[len + 1]; //dit gaat fout Win32.SendMessage(read, Win32.WM_GETTEXT, len + 1, (int)buff); Console.WriteLine(*buff); Win32.SendMessage(read, Win32.WM_SETTEXT, 0, 0); |
Als ik dat linkje goed begrepen had, zou dit het moeten zijn.
Echter: Error 1 Cannot implicitly convert type 'char[]' to 'char*' C:\Documents and Settings\J. M. Bogaard\Mijn documenten\Visual Studio 2005\Projects\et_pipe\et_pipe\Program.cs 374 34 et_pipe
Pagina: 1