AGB  ·  Datenschutz  ·  Impressum  







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

Function, Result als stringlist?

Ein Thema von Pseudemys Nelsoni · begonnen am 20. Nov 2003 · letzter Beitrag vom 20. Nov 2003
Antwort Antwort
Seite 1 von 3  1 23      
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Function, Result als stringlist?

  Alt 20. Nov 2003, 10:06
hallo,

ich möchte eine stringlist(innerhalb der function) haben, aber wie geb ich dann das ergebnis an meine procedur? schliesslich muss ich am ende ja die stringlist wieder free'en. ich hatte es so(weiss nichtmal ob es überhaupt so geht):

Delphi-Quellcode:
function bla(s: string; c: char): TStringList;
begin
  Result := TStringList.Create;
  while Pos(c, s) > 0 do
  begin
    result.Add(Copy(s, 1, Pos(c, s)));
    Delete(s, 1, Pos(c, s));
  end;
  result.Free;
end;
ich kriege immer einen zugriffsfehler, ich denke mal weil die stringlist bereits nichtmehr existiert.
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Tom

Registriert seit: 7. Jan 2003
318 Beiträge
 
RAD-Studio 2009 Pro
 
#2

Re: Function, Result als stringlist?

  Alt 20. Nov 2003, 10:09
Ja. Free ist Free.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Function, Result als stringlist?

  Alt 20. Nov 2003, 10:09
Tut sie auch nicht.
Delphi-Quellcode:
procedure Foo(s: String; c: Char; var sl: TStringList);
begin
  ...;
end;

var
  sl: TStringList;
begin
  sl := TStringList.Create;
  try
    Foo('Hello', 'c', sl);
  finally
    FreeAndNil(sl);
  end;
Mal so aus dem Kopf.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#4

Re: Function, Result als stringlist?

  Alt 20. Nov 2003, 10:11
echt

wie benutz ich eine stringlist als result
ist es möglich die function selbst als stringlist zu benutzen? oder muss ich eine in meiner procedure mitgeben? O_o
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#5

Re: Function, Result als stringlist?

  Alt 20. Nov 2003, 10:12
danke luckie, mal versuchen ^^
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Wormid
Wormid

Registriert seit: 26. Aug 2003
Ort: Steinfurt
292 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Function, Result als stringlist?

  Alt 20. Nov 2003, 10:12
Lass das Result.Free mal weg, dann müsste es gehen.
Du musst aber natürlich später die Variable Free'n, die du mit der Funktion gefüllt hast.

Delphi-Quellcode:
var SL: TStringList;
begin
  SL := bla('blubb', #13);
  // ... Mach was mit SL
  SL.Free;
end;
Gruß

Wormid
Debuggers don't remove Bugs, they only show them in Slow-Motion.
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#7

Re: Function, Result als stringlist?

  Alt 20. Nov 2003, 10:15
funzt einwandfrei, danke

nochmal ne frage, wieso FreeAndNil statt Free? bzw was ist der unterschied?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Function, Result als stringlist?

  Alt 20. Nov 2003, 10:18
Free gibt nur den Speicher wieder frei. Der Zeiger auf das Objekt bleibt bestehen. Testet man jetzt den zeiger mit Assigned, um zu kucken, ob das Objekt noch existiert, bekommt man True zurück, obwohl das nicht stimmen muss. Man sollte bei der Verwendung von Free auch noch den Zeiger auf Nil setzen. Dies spart man sich, wenn man FreeAndNil nimmt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#9

Re: Function, Result als stringlist?

  Alt 20. Nov 2003, 10:20
Oder so:
Delphi-Quellcode:
function bla(s: string; c: char): TStringList;
begin
  Result := TStringList.Create;
  while Pos(c, s) > 0 do begin
    result.Add(Copy(s, 1, Pos(c, s)));
    Delete(s, 1, Pos(c, s));
  end;
end;


var SL: TStringList;
begin
  {sollte in SL vorher schon was sein => SL.Free}
  SL := bla('4t54gfd', 'f');
  SL.FreeAndNil;
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

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

Re: Function, Result als stringlist?

  Alt 20. Nov 2003, 10:22
FreeAndNil ist eine Prozedur, keine Methode von einer Klasse.

Davon mal abgesehen finde ich meine Lösung besser. Man verliert nicht den Überblick ü+ber die Instanzen der Klasse und muss nicht überlegen, wo was wie freigegeben werden muss / kann. Aber das ist Geschmackssache.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 00:59 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