Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Speziellen Substring aus String kopieren (https://www.delphipraxis.net/136167-speziellen-substring-aus-string-kopieren.html)

Fridolin Walther 25. Jun 2009 00:00

Re: Speziellen Substring aus String kopieren
 
Zitat:

Zitat von 13Horst37
Danke, das werd ich gleich mal ausprobieren. Das einzige was noch nicht stimmt:
Mit Edit1.Text meinte ich eigentlich auch einen String, hab ich leider falsch formuliert. Der ergibt sich eben aus dem Inhalt vom Textfeld Edit1.Text.

Achso ... naja, man kann die Funktion problemlos erweitern das der String nach dem anfänglich gesucht wird, ebenfalls übergeben wird. Siehe hier:
Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

function ExtractSubStringFromString(StringToExtractFrom, DeleteFromHere : string) : string;
var
  StringStart, StringEnd : Integer;
begin
  StringStart := Pos(DeleteFromHere, StringToExtractFrom);
  if StringStart > 0 then
    begin
      Delete(StringToExtractFrom, 1, StringStart + Length(DeleteFromHere) - 1);
      StringEnd := Pos(' ', StringToExtractFrom);
      if StringEnd > 0 then
        begin
          Delete(StringToExtractFrom, StringEnd, Length(StringToExtractFrom));
          Result := StringToExtractFrom;
        end;
    end;
end;

const
  TestString = 'c599he9rc8r834n98cr2u4982543957340954309583409 0942358304298543098503495843098dfsaghdsfiouh';
  DeleteFromHere = '2u498';
begin
  writeln(ExtractSubStringFromString(TestString, DeleteFromHere));
  readln;
end.

13Horst37 25. Jun 2009 00:38

Re: Speziellen Substring aus String kopieren
 
Ich nochmal.

Hab Delphi jetz wieder zum laufen gebracht, allerdings will das ganze immernoch nicht funktionieren :(
Vllt überseh ich inzwischen selbst schon i-welche Standartfehler... *Verwirrung*

Delphi-Quellcode:
..blabla code halt
Form1.ExtractSubStringFromString(alpha); // alpha = Der String in dem sich alles abspielt
showmessage(alpha);
Alpha wird von Showmessage unverändert geöffnet.
Was mach ich falsch?!

Fridolin Walther 25. Jun 2009 00:45

Re: Speziellen Substring aus String kopieren
 
Zitat:

Zitat von 13Horst37
Alpha wird von Showmessage unverändert geöffnet.
Was mach ich falsch?!

Du verwechselst Call By Value mit Call By Reference. Der Unterschied? Nun, wenn Du die Funktion so definiert hast, wie in meinem Beispiel, bekommt die Funktion den Wert des Strings übergeben (Call By Value) - nicht aber den String selbst. Das bedeutet, daß die Funktion mit einer Kopie arbeitet und das Original (alpha in Deinem Falle) niemals anrührt. Im Gegensatz dazu steht Call By Reference. Dabei wird eine Referenz auf die Variable übergeben. Alles was Du mit der Variable also in der Funktion anstellst, betrifft die Originalvariable. Es gibt keine Kopie.

Es gibt jetzt 2 Möglichkeiten:
Die Funktion gibt den String zurück. Entspechend könntest Du sagen "alpha := Form1.ExtractSubStringFromString(alpha);".
Oder Du änderst die Funktionsdefinition dahingehend, daß der String nicht by Value übergeben wird, sondern by Reference. Dazu musst Du in der Definition der Funktion ein "var" vor den Parameter Namen setzen. Also z.B. "function ExtractSubStringFromString(var StringToExtractFrom : string) : string;".

Hawkeye219 25. Jun 2009 08:05

Re: Speziellen Substring aus String kopieren
 
Hallo,

noch ein kleiner Hinweis:

Das Funktionsergebnis sollte in jedem Fall initialisiert werden, das sonst unter Umständen ein falsches Ergebnis ausgegeben wird.

Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:04 Uhr.
Seite 2 von 2     12   

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