[DLL] Elitepvpers Library v2

12/05/2012 23:04 Sedrika#16
Quote:
Originally Posted by Che​ View Post
In welcher Sprache hast du die Bibliothek denn geschrieben? Wie sendest du die Anfragen ab? (über nen XMLRPC-Client, also über die Tapatalk API oder ganz normal?)

Werd mir das ganze morgen oder so mal genauer ansehen, die Idee finde ich jedoch nicht schlecht.
Da ich geschrieben habe, dass es mit C# nicht geht, sollte man von Visual Basic ausgehen.

Ich nutze weder die Tapatalk API (noch nie angesehen, wär eig mal nicht schlecht) oder den XML...-Client. Das meiste sind einfache WebRequests, die ich nutze.
12/06/2012 00:19 Che#17
Quote:
Originally Posted by Sedrika View Post
Da ich geschrieben habe, dass es mit C# nicht geht, sollte man von Visual Basic ausgehen.
In der Regel würde man eher von Hochsprache ausgehen, anhand deiner Beispiele hatte ichs mir schon fast gedacht, deswegen die Nachfrage.
Quote:
Originally Posted by Sedrika View Post
Ich nutze weder die Tapatalk API (noch nie angesehen, wär eig mal nicht schlecht) oder den XML...-Client. Das meiste sind einfache WebRequests, die ich nutze.
XMLRPC ist das Protokoll, welches für die Tapatalk-API verwendet wird.

Das wäre dann ein Verbesserungsvorschlag meinerseits, denn so geht es bedeutend schneller als über WebRequests (Shoutbox ausgenommen). Kannst es dir ja mal ansehen, ne Dokumentation findest du hier: [Only registered and activated users can see links. Click Here To Register...]

Beispiele für die Verwendung des XMLRPC-Protokolls unter VB findest du leicht über Google. Das wäre echt ne nette Verbesserung ;)
12/06/2012 00:47 Sedrika#18
Werd ich mir ansehen, könnte mir sicherlich helfen, wenn ich aus prinzip die Lib neu schreibe, da ich dann unnötiges meist raushaue usw.
12/06/2012 18:05 Furkan#19
Könntest du noch einfügen, dass man sehen kann wieviele ungelesene PN's man hat und am besten auch noch den Titel + Text davon.
12/06/2012 19:28 -PinkiWinki-#20
Zum C# Problem

Code:
[STAThread]
static void Main(string[] args)
{
   xLibrary.xLibrary a = new xLibrary.xLibrary();
   Console.WriteLine(a.IsEpvpUser());
}
Wieso killt IsEpvpUser() den Prozess wenn das Ergebnis false ist? Sowas sollte eine Library niemals machen, außer es ist WIRKLICH nötig. Außerdem sollte man sowieso niemals sowas wie .Kill() anwenden. Genauso wie die HWID zu generieren und zu kopieren + MessageBox sind komplett unnötig, sowas sollte man immer der Anwendung überlassen!

Ansonsten, Fehlerbehandlung scheint hier zu fehlen.
.IsUser(xLibrary.xLibrary.UserGroup.Banned) ->
"Ungültige Konvertierung von der Zeichenfolge in Typ Double.", evtl. weil ich meine HWID nicht eingetragen habe ;).
12/06/2012 20:08 Sedrika#21
Quote:
Originally Posted by -PinkiWinki- View Post
Zum C# Problem

Code:
[STAThread]
static void Main(string[] args)
{
   xLibrary.xLibrary a = new xLibrary.xLibrary();
   Console.WriteLine(a.IsEpvpUser());
}
Wieso killt IsEpvpUser() den Prozess wenn das Ergebnis false ist? Sowas sollte eine Library niemals machen, außer es ist WIRKLICH nötig. Außerdem sollte man sowieso niemals sowas wie .Kill() anwenden. Genauso wie die HWID zu generieren und zu kopieren + MessageBox sind komplett unnötig, sowas sollte man immer der Anwendung überlassen!

Ansonsten, Fehlerbehandlung scheint hier zu fehlen.
.IsUser(xLibrary.xLibrary.UserGroup.Banned) ->
"Ungültige Konvertierung von der Zeichenfolge in Typ Double.", evtl. weil ich meine HWID nicht eingetragen habe ;).
Ich habe in der Nacht die Lib komplett neu geschrieben und in Klassen unterteilt.
Und das mit dem Kill, war eine sehr alte funk noch, wo ich das ganze getestet hatte.

Ich hau bald ein Update rein mit weiteren Funktionen.
12/07/2012 21:31 Lumi#22
Du könntest zu deiner .dll noch "Premium Ablauf" Check hinzufügen.
Wenn User = Premium, dann "Premium ablauf: 05-24-2013" oder sowas. ^^
12/08/2012 15:01 ~.ScoiL#23
Und für die die es in AutoIt verwenden möchten:

Ihr öffnet Notepad und kopiert euch den Code.
Dann speichert ihr die Datei in euer Scriptverzeichnes und benennt sie zum Beispiel hello.vb .


Hier noch ein Scriptbeispiel:


Quelle: [Only registered and activated users can see links. Click Here To Register...]
12/08/2012 15:11 Sedrika#24
Habe mal die Lib neu geschrieben und in Klassen unterteilt usw.

Habe den Thread auch neugeschrieben und beispiele für Funktionen rausgenommen, da diese nun in der Lib selber vorhanden sind.

Mfg Sedrika
12/08/2012 15:36 -PinkiWinki-#25
[Only registered and activated users can see links. Click Here To Register...]

+

xLibraryEx.xLibraryEx.OpenFuncIndex() = Totaler Schwachsinn, für was bietet Microsoft direkt eine XML Dokumentation an in der IDE? Das sind simple Kommentare im Code, die IDE erzeugt daraus dann eine XML...

Wieso muss man von jeder Klasse eine Instanz anlegen? Wie wär es mit static/shared?

Kann es sein das du nirgends .Dispose aufrufst? Das ist ein Memory Leak.
12/08/2012 15:44 Sedrika#26
Meinst du damit solche kommentare im Source
Code:
    ''' <summary>
    ''' Anmelden auf Elitepvpers
    ''' </summary>
    ''' <param name="Username">Benutzername</param>
    ''' <param name="Password">Passwort</param>
    ''' <returns>True = Erfolgreich. False = Fehlgeschlagen.</returns>
    ''' <remarks></remarks>
Die sind drin.

Und wozu soll ich den Inhalt der Post Variable immer wieder disposen, wenn ich sie jedesmal überschreibe ?

Wenn es dich glücklich macht, schreibe ich ruhig vor jeder funk noch ein shared.
12/08/2012 15:54 -PinkiWinki-#27
Ja die Kommentare meine ich, du musst aber auch die XML Datei mit senden(Und in den Einstellungen erstmal einschalten).

Es ist egal ob du die Variable überschreibst, Dispose MUSS immer aufgerufen werden, das hat schon seinen Sinn. Oft verwenden Klassen native Resourcen, dann sollte man auf jeden Fall Dispose aufrufen, sonst hast du einen schönen Memory Leak im Programm ;).
12/08/2012 16:01 Sedrika#28
Ich schreib grad den kram nochmal um.

Edit: Hab es mal nun verändert neu hochgeladen und die v1.11 entfernt.

Ach und Dispose ist nicht nötig um Speicher freizugeben, da .NET dies von alleine dank der Garbagecollection welches ein Mehrstufiger Prozess ist und das ganze von alleine macht.
Dabei werden Objekte die nicht mehr referenziert werden aus dem Speicher geräumt und die, die noch referenziert werden, werden in eine zweite Ebene der Garbagecollection verschoben.

Das was ich jetzt gemacht habe ist alles zu sharen, damit man keine Instanzen mehr braucht.

Jemand der mit einem .NET Code ankommt (in dem fall du mit C#) und sich etwas darüber informiert hat, sollte es eigendlich wissen.

Zudem gibt bsp. Windows 7 alle Speicher vom Programm nach dem beenden wieder frei.

Mfg Sedrika
12/09/2012 17:42 -PinkiWinki-#29
Eben nicht. Der GC verwaltet nur managed Objekte und ruft auch nicht Dispose auf. Dispose muss selber aufgerufen werden(Oder Using Pattern).

Klassen die das IDisposable Interface implementieren nutzen oft unmanaged Resourcen, welche dann mit Dispose freigegeben werden. Wenn du das Objekt einfach überschreibst bleiben damit die unmanaged Resourcen im Speicher und werden nie gelöscht, was am Ende ein Memory Leak ist ;). Du solltest dich besser informieren, ich weiß wie der GC funktioniert.

Klar, logisch, nachdem das Programm beendet wird wird alles gelöscht. Aber was wenn die Anwendung länger läuft und öfter die Funktionen nutzt? Am Ende hast du dann einen RAM Verbrauch von 100 MB bzw bekommst eine OutOfMemory Exception im Programm oder hast massig File/Stream/... Handles offen die eigentlich geschlossen werden sollen. Wie gesagt Dispose hat seinen sinn.

Bei manchen Klassen könnte man es theoretisch weglassen, aber das ist einfach unsauber und ein schlechter Stil.
12/09/2012 22:55 Sedrika#30
Wozu sollte ich IDisposable in meine Subs einbringen um zwischen durch Manuell Resourcen freizugeben, wenn die GC das für mich macht.

Und nur weil mein Stil nicht deinem entspricht ist es och lange nicht schlecht.