![]() |
funktion explode?
Hallo liebe Delphi-Prax'ler:)
ich hätte einmal eine Frage zu der Funktion "explode" mit diesem Quelltext:
Delphi-Quellcode:
Ein Freund hatte mir gesagt, das dabei Zeichenketten in ein dynamisches String-Array aufgeteilt werden.
Function explode(const Separator,S: string;Limit:Integer = 6):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; Doch was heißt das jetzt genau? Was macht die Funktion im Allgemeinen? Ich weiß nicht ob ihr dafür Zeit habt, aber würde mir jemand vielleicht sogar erklären was in jeder Zeile bzw. in den jeweiligen Abschnitten so ungefähr abläuft? Das würde mir wirklich sehr weiterhelfen. Ich hoffe es findet sich jemand, der so nett ist. Liebe Grüße [edit=mkinzler]Code-Tag durch Delphi-Tag ersetzt Mfg, mkinzler[/edit] |
Re: funktion explode?
Wenn man den Anfangskommentar der Funktion nicht gelöscht hätte, dann sollte man eigentlich rausbekommen, was diese Funktion macht.
siehe: ![]() Zitat:
|
Re: funktion explode?
statisches Array: Feste Größe, kann in der Größe nicht verändert werden. Anfangs- und Endindizes können manuell eingestellt werden
Dynamisches Array: Variable/Dynamische Größe, kann verändert werden. (Als Beispiel können hier Strings angeführt werden). Anfangsindex: 0, Endindex: Größe -1 Bernhard PS: Der Code verwendet für eine schnellere Ausführzeit Pointer-Typen. Somit ist diese Funktion gar nicht auf ein Anfänger-Level runterbrechbar. |
Re: funktion explode?
Mit dem einem PChar wird hier aber auch sehr sanft umgegangen und es gibt keine wilden/unüberschaubaren Berechnungen oder Kopieraktionen ala
![]() ![]() Ein sehr großer Teil dieser Funktion läßt sich eigentlich gut selbererklären und mit F1 sollten sich viele Unklarheiten ausgelöschen lassen. Wenn jemand bei einem der Befehle/Codezeilen Probleme hat, dann kann derjenige/diejenige auch gern geziehlt danach fragen, aber eine alle Befehler/Zeilen einer einfachen Funktion zu kommentieren, abgesehn davon, daß es unübersichtlich wird ... dafür hab ich dann auch nicht wirklich Lust und Zeit (tut mir ja auch etwas Leid, aber ein bissl Eigeninitiative darf ich doch vor voraussetzen können) - PChar ist ein Zeiger auf ein Zeichen, z.B. innerhalb eines Strings - meißten wird auf das erste Zeichen gezeigt, was dann sozusagen einen Zeiger auf den ganzen String ergibt - das Zeichen #0 ist bei PChar das Ende-Zeichen - ja und hier wird der Zeiger jeweils auf den Stringanfang und von ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:51 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