![]() |
In Function übergebenes dynamisches Array
Also ich will einen String mit Leerzeichen an den Leerzeichen teilen, die einzelnen Teile werden dann in ein dynamisches Array geschrieben.
Hier der Code:
Code:
wenn ich jetzt
function parsen ( var output: array of String; input: string; trennzeichen:char):integer;
var i,ac:integer; begin ac := 1; setlength(output,ac); for i:=0 to length(input) do begin if input[i] = ' ' then begin inc(ac); setlength(output,ac); end else begin output[ac]:=output[ac]+input[i]; end; end; result := ac; end; setlength(output,ac); mache dann kommt [Fehler] Unit1.pas(41): Inkompatible Typen was mache ich falsch :?: oder darf ich die Länge eines Übergebenen Arrays nicht verändern :freak: :nerd: :?: DANKE schonmal![/b] |
Wenn du mit Funktionen bzw. Prozeduren und dynamischen Arrays arbeitest, kannst du das Array nicht einfach so übergeben, sondern musst dir eine Art Alias-Typ erschaffen. Im Code sieht das dann so aus:
Code:
type TStringArray = Array of String;
function parsen ( var output: TStringArray; input: string; trennzeichen:char):integer; var i,ac:integer; begin ac := 1; setlength(output,ac); for i:=0 to length(input) do begin if input[i] = ' ' then begin inc(ac); setlength(output,ac); end else begin output[ac]:=output[ac]+input[i]; end; end; result := ac; end; |
DANKE.
Aber da hätte ich auch selber drauf kommen können :!: :oops: :oops: |
Hi Roman,
die Größenänderung dürfte aber ziemlich in die Hose gehen, weil dabei alle Daten aus dem Array gelöscht werden. Damit gibst du paktisch nur den Teil nach dem letzten Leerzeichen zurück. MfG, d3g |
Beim Aufruf von SetLength werden keine Daten gelöscht, wenn die neue Länge größer als die alte ist.
|
:?: Ich dachte, ich hätte was anderes in der Delpih-Hilfe gelesen, aber um so besser :D
|
Meine Hilfe schreibt da folgendes
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 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