AGB  ·  Datenschutz  ·  Impressum  







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

[C++] Problem mit Funktion

Ein Thema von Mark90 · begonnen am 22. Jul 2007 · letzter Beitrag vom 22. Jul 2007
Antwort Antwort
Mark90
(Gast)

n/a Beiträge
 
#1

[C++] Problem mit Funktion

  Alt 22. Jul 2007, 17:45
HI leute!

ich bin vor kurzem auf c++ umgestiegen. Ich habe ein kleines Problem mit einer funktion!

Code:
TStringList InputFile(AnsiString File)
{
   TStringList *sl = new TStringList();

   sl->LoadFromFile(File);
   // hier ändere ich die Stringlist

   return sl;
}
Es kommt eine Fehlermeldung dass tStringlist * nicht in TStringlist konvertiert werden kann.

Danke Schon mal im vorraus für eure antworten

[edit=SirThornberry]Delphi-Tags durch c-Tags ersetzt - Mfg, SirThornberry[/edit]
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#2

Re: [C++] Problem mit Funktion

  Alt 22. Jul 2007, 17:50
Zitat von Mark90:
ich bin vor kurzem auf c++ umgestiegen.
Gibts Leute, die sich das freiwillig antun?

Versuchs mal so(die Fehlermeldung ist doch eigentlich eindeutig):
TStringList* InputFile(AnsiString File)
mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [C++] Problem mit Funktion

  Alt 22. Jul 2007, 17:54
Jetzt muss der Zeiger aber außerhalb der Funktion freigegeben werden. Ich denke, die günstigste Variante wäre
Code:
return *sl;
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Mark90
(Gast)

n/a Beiträge
 
#4

Re: [C++] Problem mit Funktion

  Alt 22. Jul 2007, 17:57
Zitat von r2c2:
Zitat von Mark90:
ich bin vor kurzem auf c++ umgestiegen.
Gibts Leute, die sich das freiwillig antun?

Versuchs mal so(die Fehlermeldung ist doch eigentlich eindeutig):
TStringList* InputFile(AnsiString File)
He danke das hat geklappt!! man sollte die fehlermeldung einfach genauer lesen! Un was Delphi betrifft hast du recht!! wesentlich einfacher als c++
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#5

Re: [C++] Problem mit Funktion

  Alt 22. Jul 2007, 18:00
Zitat von Apollonius:
Jetzt muss der Zeiger aber außerhalb der Funktion freigegeben werden. Ich denke, die günstigste Variante wäre
Code:
return *sl;
Dereferenzieren von VCL-Klassen geht nicht. Aber dein Einwand ist berechtigt. Besser also so:
Code:
// Pseudocode:
void InputFile(AnsiString File, TStringList* sl)

   sl->LoadFromFile(File);
   // hier ändere ich die Stringlist
}


[...]

  sl = new TStringList();
  try
  {
    InputFile(File, sl);
  }
  finally
  {
    sl.Free;
  }
mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: [C++] Problem mit Funktion

  Alt 22. Jul 2007, 18:20
Wieder was gelernt. Man kann aber durchaus von Delphi übertragen: Da soll man keine Klassen als result zurückegeben, und Delphi-Klassen entsprechen ja ungefähr Zeigern auf C++-Klassen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#7

Re: [C++] Problem mit Funktion

  Alt 22. Jul 2007, 20:19
Zitat von Apollonius:
Wieder was gelernt. Man kann aber durchaus von Delphi übertragen: Da soll man keine Klassen als result zurückegeben, und Delphi-Klassen entsprechen ja ungefähr Zeigern auf C++-Klassen.
Zur Erklärung:
Im C++Builder gibt es 2 Arten von Klassen: C++-Klassen und VCL-Klassen. C++-Klassen können Mehrfachvererbung, dereferenziert werden, aufm Stack liegen, statisch lokal sein, etc. also all die kranken Featues, die C++ eben hat. Im Gegensatz dazu sind VCL-Klassen immer von TObject abgeleitet und verhalten sich auch sonst genau so, wie die Klassen aus Delphi. Vermischen geht aber nicht. d.h. die einen können zwar die anderen benutzen, etc. aber nicht von ihnen erben...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  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 23:58 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