![]() |
AW: String umdrehen
Zitat:
Delphi-Quellcode:
.
Move( Word[1], Result[i], p * SizeOf(Char));
Das SizeOf(Char) ist der Multiplikator. Vor D2009 ist der 1 (weil 1 Zeichen -> 1 Byte), danach ist der 2 (weil 1 Zeichen -> 2 Bytes oder so), auf jeden Fall ist der dann zu der Delphi-Version passend und es sollte nicht zu Problemen kommen. Bernhard |
AW: String umdrehen
Allerdings muß man nicht immer alles extremst optimieren,
denn soo oft wird diese Funktion bestimmt nicht aufgerufen, als daß da 'ne Microsekunde wirklich auffällt ... in soeinem Fall lieber einfachen Code verwenden, da weniger fehleranfällig und übersichtlicher. |
AW: String umdrehen
Tja grade wenn er eine Aufgabe für die Schule bearbeitet wird er glaube ich mit Move nicht glücklich werden :)
Das sind einfach keine Basics mehr... |
AW: String umdrehen
Hier mal meinen Senf dazu... Habe das getestet. Ist sicherlich Fähig zu optimieren :)
Ich benutze immer eine Funktion die sich Explode nennt da ich viel mit arrays arbeite ;) hier mal mein Code :
Delphi-Quellcode:
Hoffe das ich jetzt nicht deine Hausaufgaben gemacht habe :wink:
TSTringdynarray = array of String;
var Form1: TForm1; WechselText : TStringDynArray; function Explode(const Separator, S: string; Limit: Integer = 0): TStringDynArray; var SepLen: Integer; F, P: PChar; ALen, Index: Integer; begin SetLength(Result, 0); if (S = '') or (Limit < 0) then Exit; if Separator = '' then begin SetLength(Result, 1); Result[0] := S; Exit; end; SepLen := Length(Separator); ALen := Limit; SetLength(Result, ALen); Index := 0; P := PChar(S); while P^ <> #0 do begin F := P; P := AnsiStrPos(P, PChar(Separator)); if (P = nil) or ((Limit > 0) and (Index = Limit - 1)) then P := StrEnd(F); if Index >= ALen then begin Inc(ALen, 5); SetLength(Result, ALen); end; SetString(Result[Index], F, P - F); Inc(Index); if P^ <> #0 then Inc(P, SepLen); end; if Index < ALen then SetLength(Result, Index); end; procedure TForm1.Button1Click(Sender: TObject); var I : Integer; begin Edit2.text := ''; WechselText := Explode(' ',Edit1.text); for I := 0 to Length(WechselText) - 1 do begin WechselText[i] := ReverseString(Wechseltext[i]); Edit2.text := Wechseltext[i] + ' ' + Edit2.text; end; end; gruss Sascha |
AW: String umdrehen
Hallo,
umdrehen geht auch so
Delphi-Quellcode:
for i := 1 to length(input) do
begin output := output + input[length(input)-(i-1)] end; Warum immer so Kompliziert :?: |
AW: String umdrehen
Das ist sehr unperformant, denn du fügst einem String einen weiteren String hinzu, was zu einem stetigen Erweitern und somit Speicher neu allozieren führt, das ja bekannterweise langsam ist!
|
AW: String umdrehen
Hallo,
Zitat:
|
AW: String umdrehen
Klar, ich habe ja die Funktionalität gar nicht bezweifel ;)
Aber wissen sollte man das schon, deshalb habe ich es auch erwähnt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz