AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi TStringlist von function() zurückgeben - nicht möglich?
Thema durchsuchen
Ansicht
Themen-Optionen

TStringlist von function() zurückgeben - nicht möglich?

Ein Thema von JanWe · begonnen am 10. Mai 2022 · letzter Beitrag vom 11. Mai 2022
Antwort Antwort
Benutzerbild von JanWe
JanWe

Registriert seit: 23. Mär 2015
Ort: NRW
79 Beiträge
 
Delphi 7 Personal
 
#1

TStringlist von function() zurückgeben - nicht möglich?

  Alt 10. Mai 2022, 15:50
Delphi-Version: 5
Hallo,

ich würde gerne eine Stringliste als Ergebnis einer function() zurückerhalten und ausgeben.
Das Formular hat 2 Memos und 1 Edit.

In der function werden beispielhaft erstmal nur die beiden Strings aneinandergehängt.

Erst hat Delphi gemeckert, weil der Zugriff bei der Übergabe an Result in der Funktion oder dann im Button bei der Zuweisung an Zielliste nicht möglich war, (ich hab wegen der Übersicht wieder v verwendet; dürfte aber wegen assign() egal sein)

aktuell crasht es schon beim Verlassen der Buttonprozedur nach v.free.

Es ist mir ein Rätsel.

Was mach ich denn alles falsch?

Delphi-Quellcode:
function sende (sa: TStringlist; sb: TStringlist): TStringlist;
var
x : Tstringlist;
begin
x := Tstringlist.create;
x.add( sa[0] + Sb[0] );
 form1.memo1.lines.Assign(x); // Testweise ausgeben - funktioniert

{ welches der folgenden beiden? }
// result := (z); geht ja auch nicht
//result.Assign(z);
  x.free;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
u : Tstringlist;
v : Tstringlist;
begin
 u := Tstringlist.create;
 v := Tstringlist.create;

 u.add('Hafen');
 u.add('Donau');

 v.add('schiffahrt'); v.add('rundfahrt');

 v := sende (u, v);
// v.Assign( sende (u, v) ); // geht irgendwie auch nicht

// memo2.lines.Assign(v); // hier gibt's nen Knall
 u.free;
 v.free;
end;
Angehängt: Sende.7z (126,7 KB)
Angehängte Grafiken
Dateityp: jpg BUTTX.jpg (16,3 KB, 8x aufgerufen)
Angehängte Dateien
Dateityp: 7z Sende.7z (126,7 KB, 1x aufgerufen)
Jan
Allen demnächst ein gutes 2023!

Geändert von JanWe (10. Mai 2022 um 16:01 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.873 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TStringlist von function() zurückgeben - nicht möglich?

  Alt 10. Mai 2022, 15:53
Auf die lokale Variable kannst Du verzichten.
Du gibst die Stringliste ja frei. Da ist es nur folgerichtig, dass es knallt.

Delphi-Quellcode:
function sende (sa: TStringlist; sb: TStringlist): TStringlist;
[s]var
x : Tstringlist;[/s]
begin
result := Tstringlist.create;
result.add( sa[0] + Sb[0] );
 form1.memo1.lines.Assign(result); // Testweise ausgeben - funktioniert

{ welches der folgenden beiden? }
// result := (z); geht ja auch nicht
//result.Assign(z);
 [s] x.free;[/s]
end;
Markus Kinzler

Geändert von mkinzler (10. Mai 2022 um 15:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von JanWe
JanWe

Registriert seit: 23. Mär 2015
Ort: NRW
79 Beiträge
 
Delphi 7 Personal
 
#3

AW: TStringlist von function() zurückgeben - nicht möglich?

  Alt 10. Mai 2022, 15:55
achso, nee, das soll alles x

hatte die Liste 'z' umbenannt in 'x' (naja, der Buchstabe 'z' ist jetzt derzeit gerade "nicht so beliebt", darum dachte ich 'x' wäre besser.

Edit:
Aber warum soll ich die lokale Stringliste nicht verwenden und nach Überagbe an Result (wie mach ich das? doch mit Assign, oder?) löschen?

Ich würde die gerne mit/an result übergeben. (das mit form1.memo war nur testweise gedacht)
Oder gehen da nur Strings und Zahlen?
also result.assign(x); dann x.free;
Jan
Allen demnächst ein gutes 2023!

Geändert von JanWe (10. Mai 2022 um 16:00 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.873 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TStringlist von function() zurückgeben - nicht möglich?

  Alt 10. Mai 2022, 15:58
Der Name ist ja egal. Du darfst das Ergebnis halt nicht vor der Rückgabe freigeben. Man kann direkt mit result arbeiten.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von JanWe
JanWe

Registriert seit: 23. Mär 2015
Ort: NRW
79 Beiträge
 
Delphi 7 Personal
 
#5

AW: TStringlist von function() zurückgeben - nicht möglich?

  Alt 10. Mai 2022, 16:10
ja, ich habe ja am Ende der function versucht result <-- x zuzuweisen,

result.assign(x);

aber dann crashte es bei der Rückkehr zum Button.


Delphi-Quellcode:
function sende (sa: TStringlist; sb: TStringlist): TStringlist;
var
x : Tstringlist;
begin
x := Tstringlist.create;
x.Clear;
x.add( sa[0] + Sb[0] );


{ welches der folgenden beiden? }
// result := (z); geht ja auch nicht, oder? wird ja dann nur als String zugwiesen

result.Assign(x); // <-- knallt aktuell hier. Keine Ahnung, warum
  x.free;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
u : Tstringlist;
v : Tstringlist;
begin
 u := Tstringlist.create;
 v := Tstringlist.create;

 u.add('Hafen');
 u.add('Donau');

 v.add('schiffahrt'); v.add('rundfahrt');


 v.Assign( sende (u, v) );

 u.free;
 v.free;
end; // ende Button
Jan
Allen demnächst ein gutes 2023!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.873 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: TStringlist von function() zurückgeben - nicht möglich?

  Alt 10. Mai 2022, 16:31
Zitat:
Du darfst das Ergebnis halt nicht vor der Rückgabe freigeben.
und genau das machtst Du

Zitat:
x.free;
Einfach so:

Delphi-Quellcode:
function sende (sa: TStringlist; sb: TStringlist): TStringlist;
begin
  result := Tstringlist.create;
  result.add( sa[0] + Sb[0] );
  form1.memo1.lines.Assign(result); // Testweise ausgeben - funktioniert
end;
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort


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 19:46 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