AW: Anzahl eines Zeichens im String ermitteln
Wo zum Henker soll das sein? :shock:
Nein das hilft nicht. Was mir helfen würde wäre vllt. der Inhalt der CPU Register am Anfang meiner Funktion. Habe das Gefühl dass da wie gesagt etwas nicht so ankommt wie erwartet. |
AW: Anzahl eines Zeichens im String ermitteln
Zitat:
Delphi-Quellcode:
diese Zeile verursacht bei mir den Fehler.
mov ecx, len
|
AW: Anzahl eines Zeichens im String ermitteln
Zitat:
Wie zum Teufel kann diese Zeile einen Fehler verursachen? Zeig mir bitte den die CPU Register direkt nachdem in die Funktion gesprungen wird. Da ist irgendwas komplett faul.. |
AW: Anzahl eines Zeichens im String ermitteln
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
|
AW: Anzahl eines Zeichens im String ermitteln
Zitat:
Hier meine Zeiten für einen Teststring mit 500000 ASCII-Zeichen, Suche nach 'X', jeweils 10000 Calls, Zeiten in Millisekunden: Zitat:
Delphi-Quellcode:
besteht, brachte erwartungsgemäß 0 ms. Die übrigen Werte schwanken bei wiederholten Aufrufen um weniger als 10%.
Result := 0
|
AW: Anzahl eines Zeichens im String ermitteln
Ja.
Und der Screenshot ist gemacht worden als das Programm auf dem "cld" Befehl (oder auf "asm") angehalten war? Weil dann versteh ich nicht was da los ist. Ich komme mir irgendwie verarscht vor. In den Registern ist absolut keine Spur von irgendeinem der Parameter die übergeben werden sollen. D.h. wenn überhaupt sind die Parameter auf dem Stack, was aber auch absolut keinen Sinn macht. Dein EIP sieht auch irgendwie seltsam aus.. Vllt. liegt das auch nur an ASLR (?). Ich weiß nicht was das Problem ist aber von dem was ich hier sehe kann ich meiner Funktion dafür keine Schuld geben wenn aus welchem Grund auch immer bei euch (dir) kompletter Müll in der Funktion ankommt. |
AW: Anzahl eines Zeichens im String ermitteln
Zitat:
Zitat:
|
AW: Anzahl eines Zeichens im String ermitteln
Noch ein kleiner:
Scanne von beiden Seiten und halbiere die Loop:
Delphi-Quellcode:
Wegen der Schwankungen empfehle ich jeden test mind 10x durchzuführen und einen avg zu bilden.
function EH_CharCount4(const S: string; C: Char): Cardinal;
var P, PEnd: PChar; begin Result := 0; P := Pointer(S); if P = nil then Exit; PEnd := P + PStrLenInt(NativeUInt(P) - SizeOf(StrLenInt))^-1; if PEnd = p //handle single char string then Inc(Result, Ord(P^ = C)) else while P < PEnd do begin if P^ = C then Inc(Result); Inc(P); if PEnd >= P then begin if PEnd^ = C then Inc(Result); Dec(PEnd); end; end; end; |
AW: Anzahl eines Zeichens im String ermitteln
Zitat:
Außerdem wird edi nirgends gerettet und wieder hergestellt. |
AW: Anzahl eines Zeichens im String ermitteln
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Es ist aber in der Tat so, daß es schon zwischen verschiedenen Compilaten durchaus Unterschiede geben kann, bei denen sich die Reihenfolge mancher Kandidaten vertauscht. Das ist wohl auch davon abhängig, was auf dem System sonst gerade noch so alles passiert. Es ist aber schon ein Trend zu erkennen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:40 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