AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

funktion soll TStringList zurückliefern

Ein Thema von idontwantaname · begonnen am 28. Dez 2004 · letzter Beitrag vom 28. Dez 2004
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#1

funktion soll TStringList zurückliefern

  Alt 28. Dez 2004, 14:19
Hi !

ich mache mir gerade eine Funktion, die einen String anhand eines Zeichens teilen soll, das funktioniert auch, nur möchte ich, das die Funktion eine TStringList zurückliefert, ist sowas möglich ??

hier der Quellcode:
Delphi-Quellcode:
var Foo: TStringList

{Im FormCreate-Event:}
Foo := TStringList.Create;

{und im FormDestroy-Event:}
Foo.Free

{...}

procedure SplitString(Str: String; Chr: Char);
var   newStr,Buffer:String;
      Schleife: Integer;
begin
   newStr := Str + Chr;
   if(Pos(Chr,newStr) <> Length(newStr)) then
       for Schleife := 1 to Length(newStr) do
       begin
         if(newStr[Schleife] <> Chr) then
              Buffer := Buffer + newStr[Schleife]
           else begin
               Foo.Add(Buffer);
               Buffer := '';
           end
        end
    else
       Foo.Add(Str);
end;
Oliver Hanappi
Besucht meine neue Homepage: http://oli.hux.de
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#2

Re: funktion soll TStringList zurückliefern

  Alt 28. Dez 2004, 14:26
Es ist relativ einfach. Du erstellst in deiner Funktion (vielleicht sogar direkt in der Result-Variable) eine Instanz von TStringList, die du dann bearbeitest und zurücklieferst.

Delphi-Quellcode:
procedure SplitString(Str: String; Chr: Char);
var newStr,Buffer:String;
      Schleife: Integer;
      Foo: TStringList;
begin
   Foo := TStringList.Create;
   newStr := Str + Chr;
   if(Pos(Chr,newStr) <> Length(newStr)) then
       for Schleife := 1 to Length(newStr) do
       begin
         if(newStr[Schleife] <> Chr) then
              Buffer := Buffer + newStr[Schleife]
           else begin
               Foo.Add(Buffer);
               Buffer := '';
           end
        end
    else
       Foo.Add(Str);
    Result := Foo;
end;
  Mit Zitat antworten Zitat
KLS

Registriert seit: 20. Jun 2004
Ort: Berlin
89 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: funktion soll TStringList zurückliefern

  Alt 28. Dez 2004, 14:27
Ich habe hier einen ziemlich ähnlichen code... etwas älter und weiß momentan nicht ob er korrekt läuft...

Delphi-Quellcode:
function SplitString(WasSuchen,WorinSuchen : String) : TStringList;
var
  Stelle : integer;
begin
  Result := TStringList.Create;
  Stelle := 1;
  if not (Worinsuchen[Length(WorinSuchen)] = WasSuchen) then WorinSuchen := WorinSuchen+WasSuchen;
  while Length(WorinSuchen) > 0 do if WorinSuchen[stelle] = WasSuchen then
  begin
    Result.Add(Copy(WorinSuchen,1,Stelle-1));
    WorinSuchen := copy(WorinSuchen,Stelle+1,length(WorinSuchen));
    Stelle := 1;
  end else inc(Stelle);
end;
Thomas H.
  Mit Zitat antworten Zitat
Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: funktion soll TStringList zurückliefern

  Alt 28. Dez 2004, 14:33
vielen dank,
komischer weise hab ich es zuerst auch so probiert, und es ging nicht
aber hauptsache jetzt funzt es

nochmal danke
Oliver Hanappi
Besucht meine neue Homepage: http://oli.hux.de
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#5

Re: funktion soll TStringList zurückliefern

  Alt 28. Dez 2004, 14:34
Zitat von idontwantaname:
ich mache mir gerade eine Funktion, die einen String anhand eines Zeichens teilen soll, das funktioniert auch, nur möchte ich, das die Funktion eine TStringList zurückliefert, ist sowas möglich ??
Delphi-Quellcode:
procedure SplitString(const Str: String; Chr: Char; Result: TStrings);
begin

  with Result do
  begin
    Clear;
    Delimiter := Chr;
    DelimitedText := Str;
  end;

end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin

  SplitString('abc;123;def;456;ghi;789', ';', Memo1.Lines);

end;
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: funktion soll TStringList zurückliefern

  Alt 28. Dez 2004, 14:35
Und beide Code Beispiele produzieren ein Speicherleck, oder wo gebt ihr eure Stringlisten wieder frei?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Sprint
Sprint

Registriert seit: 18. Aug 2004
Ort: Edewecht
712 Beiträge
 
Delphi 5 Professional
 
#7

Re: funktion soll TStringList zurückliefern

  Alt 28. Dez 2004, 14:37
Zitat von Luckie:
Und beide Code Beispiele produzieren ein Speicherleck, oder wo gebt ihr eure Stringlisten wieder frei?
Mich kannst du nicht gemeint haben...
Ciao, Sprint.

"I don't know what I am doing, but I am sure I am having fun!"
  Mit Zitat antworten Zitat
Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: funktion soll TStringList zurückliefern

  Alt 28. Dez 2004, 14:37
das habe ich mich auch schon gefragt, die StringList wird zwar "gemacht", aber nicht mehr freigegeben, hat da jemand eine idee ??
Oliver Hanappi
Besucht meine neue Homepage: http://oli.hux.de
  Mit Zitat antworten Zitat
Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: funktion soll TStringList zurückliefern

  Alt 28. Dez 2004, 14:40
könnte das so gehen ??
Delphi-Quellcode:
with SplitString(Edit1.Text,' ') do
begin
  for Schleife := 0 to Count - 1 do
    Ausgabe := Ausgabe + Strings[Schleife] + #13#10;
  ShowMessage(Ausgabe);
  Free;
end;
Oliver Hanappi
Besucht meine neue Homepage: http://oli.hux.de
  Mit Zitat antworten Zitat
KLS

Registriert seit: 20. Jun 2004
Ort: Berlin
89 Beiträge
 
Delphi 7 Enterprise
 
#10

Re: funktion soll TStringList zurückliefern

  Alt 28. Dez 2004, 14:41
Zitat von Luckie:
Und beide Code Beispiele produzieren ein Speicherleck, oder wo gebt ihr eure Stringlisten wieder frei?
Ja schon richtig, programmieren aller M$ halt
Wenn wir schon dabei sind wie kann ich denn das result einer function wieder freigeben? Oder geht das nur indirekt?
Thomas H.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:43 Uhr.
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