Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   TStrings definieren (https://www.delphipraxis.net/86601-tstrings-definieren.html)

fapsons 16. Feb 2007 08:36


TStrings definieren
 
Hallo Leute,

bin noch totaler Anfänger in Delphi und brauche um mit dem IBDataSet Steuerelement arbeiten zu können ein Objekt vom Typ TStrings.

Habe es wie folgt probiert:

Delphi-Quellcode:
...

var test :TStrings;
begin
  test := TStrings.Create;
  test.Free;
  test.Strings[0] := 'Dies ist ein Test';
...
Was habe ich falsch gemacht, nicht bedacht?

[edit=SirThornberry]Delphi-Tags gesetzt - Mfg, SirThornberry[/edit]

Schaedel 16. Feb 2007 08:42

Re: TStrings definieren
 
Delphi-Quellcode:
 test := TStrings.Create;
test.Free;
test.Strings[0] := 'Dies ist ein Test';

Du erstellst einen TString und gibst ihn danach wieder frei... Versuchst aber dann auf den Tstring etwas zu schreiben der nicht mehr vorhanden ist.


Delphi-Quellcode:
 
try
  test := TStrings.Create;
  test.Strings[0] := 'Dies ist ein Test';
finally
  test.Free;
end;
So rum :)


Willkommen in der Delphipraxis. :cheers:

mkinzler 16. Feb 2007 08:46

Re: TStrings definieren
 
Je nach dem was du vorhast, solltest du die Instanz vielleicht so:
Delphi-Quellcode:
test := TStringList.Create;
erzeugen.
Außerdem mußt du erst einen Entrag erzeugen, bevor du ihm etwas zuweisen kannst, also
statt
Delphi-Quellcode:
test.Strings[0] := 'Dies ist ein Test';
nimmst du besser
Delphi-Quellcode:
test.Add('Dies ist ein Test');

uligerhardt 16. Feb 2007 08:56

Re: TStrings definieren
 
Zitat:

Zitat von fapsons
var test :TStrings;
begin
test := TStrings.Create;
test.Free;
test.Strings[0] := 'Dies ist ein Test';
...


Was habe ich falsch gemacht, nicht bedacht?

Ich würde sagen, du hast die Warnungen deines Compilers ignoriert. :) Der hat dir bestimmt bzgl. TStrings irgendwas von abstrakten Methoden erzählt. Nimm lieber TStringList, wie es mkinzler auch geschrieben hat.

Uli.

raiguen 16. Feb 2007 08:56

Re: TStrings definieren
 
@schaedel:
so funktioniert das ganze auch nicht! Spätestens beim test[0] := 'bla' wird ein 'Abstrakter Fehler' geworfen!

Obwohl test vom Typ TStrings ist, muss das Createn anders erfolen (BTW: TString selbt kennt keine Methode .Create)
Delphi-Quellcode:
test := TStringList.Create;
test.Add('bla');
test.Add('blubb');

ShowMessage(test[0]); //<-- zeigt bla
ShowMessage(test[1]); // zeigt blubb

//--erst NACH der Verwendung von test diesen freigebe!!
test.Free
//EDIT: Uppsala, da haben sich die roten Kästen aber überschlagen ;-)

mkinzler 16. Feb 2007 09:03

Re: TStrings definieren
 
Zitat:

Obwohl test vom Typ TStrings ist, muss das Createn anders erfolen (BTW: TString selbt kennt keine Methode .Create)
Doch, da der Konstruktor von TObject geerbt ist. Imho dürfte das Beispiel noch mit TStrings funktionieren, aber wie gesagt besser TStringList.

raiguen 16. Feb 2007 09:08

Re: TStrings definieren
 
Zitat:

Zitat von mkinzler
Zitat:

Obwohl test vom Typ TStrings ist, muss das Createn anders erfolen (BTW: TString selbt kennt keine Methode .Create)
Doch, da der Konstruktor von TObject geerbt ist. Imho dürfte das Beispiel noch mit TStrings funktionieren, aber wie gesagt besser TStringList.

Mag schon sein, dass .Create vererbt wird; aber dennoch wird das Beispiel NICHT funktionieren, weil - wie ich bereits erwähnt habe - spätestens hier -> test.Add() <-- der 'Abstrakte Fehler' erscheint! Also von daher ist es schon korrekt (und so sagt es ja auch die OH), TStringList zu verwenden.

DP-Maintenance 16. Feb 2007 09:09

DP-Maintenance
 
Dieses Thema wurde von "SirThornberry" von "Programmieren allgemein" nach "Object-Pascal / Delphi-Language" verschoben.

fapsons 16. Feb 2007 09:57

Re: TStrings definieren
 
Vielen Dank.
Ihr habt mir erstmal sehr weitergeholfen.
Brauchte zwar zwingend einen TString und keinen TStringList,
habe es aber Dank eurer Hilfe trotzdem hinbekommen...

Gruß,
Oli

TonyR 16. Feb 2007 10:03

Re: TStrings definieren
 
Zitat:

Zitat von fapsons
Brauchte zwar zwingend einen TString und keinen TStringList,

Wieso denn??? Wenn du irgendeinem Objekt TStrings zuweisen möchtest kannst du auch einfach die StringList nehmen, da gibts doch dann keinen Unterschied! :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:31 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 by Thomas Breitkreuz