![]() |
Functions-Problem
Also, ich habe mir folgende Function gebaut:
Delphi-Quellcode:
Damit mache ich aus z.B. 1.0.0.0 dann 1000.
function GVersion(s: String): String;
begin while Pos('.', x) > 0 do x[Pos('.', s)] := ' '; while Pos(' ', x) > 0 do Delete(x, Pos(' ', x), 1); result := x; end; So.. Insgesamt führe ich das zwei mal mit zwei verschiedenen Exe-Files aus.
Delphi-Quellcode:
Das klappt aber nicht, beide Strings bleiben leer.
sAppVersion := GVersion(sAppVersion);
sAktVersion := GVersion(sAktVersion); Ich habe zwar schon eine Lösung gefunden, aber mich würde mal interessieren, warum das so ist? |
Re: Functions-Problem
Hi,
zuerst einmal verwendest Du eine Variable namens x, die nirgendwo deklariert ist. Zum Zweiten ist Dein Code sehr unperformant. Da kann man deutlich besser machen:
Delphi-Quellcode:
function GVersion(s: String): String;
var I: Integer; begin I := Pos('.', s); while I > 0 do begin Delete(s, I, 1); I := Pos('.', s); end; result := s; end; |
Re: Functions-Problem
Delphi-Quellcode:
function GVersion(s: String): String;
begin result := StringReplace(s, '.', '', [rfReplaceAll]); end; |
Re: Functions-Problem
Delphi-Quellcode:
function GVersion(const s: String): String;
begin result := StringReplace(s, '.', '', [rfReplaceAll]); end; |
Re: Functions-Problem
Moin Zusammen,
dann will ich auch mal ;-)
Delphi-Quellcode:
function RemoveChar(const AsValue : string;const AcToRemove : Char) : string;
var iFrom : integer; iTo : Integer; begin SetLength(Result,Length(AsValue)); iTo := 0; for iFrom := 1 to Length(AsValue) do begin if AsValue[iFrom] <> AcToRemove then begin Inc(iTo); Result[iTo] := AsValue[iFrom]; end; end; SetLength(Result,iTo); end; |
Re: Functions-Problem
Hi
Eure Programmhilfen in Ehren, aber die Frage lautet: Was mache ich falsch und da ist der Hinweis auf die nicht deklarierte Variabe x die einzig richtige Antwort. Das es besser geht, keine Frage, aber es muß doch eigentlich auf den Fehler hingewiesen werden... Sorry, wenns ein bißchen blöd und altklug klingt, das ist nicht meine Absicht, aber es ist noch sehr früh und ich bin in Zeitdruck... So ist die Function richtig..
Delphi-Quellcode:
An der Formatierung ist eigentlich nicht wirklich was auszusetzen, allerdings ist der Umweg über das Leerzeichen nicht notwendig.
function GVersion(s: String): String;
Var x : String; // x deklarieren begin x:=s; // x initialisieren while Pos('.', x) > 0 do x[Pos('.', s)] := ' '; while Pos(' ', x) > 0 do Delete(x, Pos(' ', x), 1); result := x; end; Gruß oldmax |
Re: Functions-Problem
Warum soll den ums Verrecken ein unperformanter Code verbessert werden, wenn es eine fertige Delphi-Funktion dafür gibt?
|
Re: Functions-Problem
Hi
Zitat:
Gruß oldmax |
Re: Functions-Problem
Zitat:
Aber ich werde mir mal eure Funktionen ansehen und draus lernen. Vom StringReplace möchte ich eigentlich weg bleiben. Ich probiers mal aus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 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