Avatar billede zwonkie Nybegynder
01. november 2000 - 11:47 Der er 5 kommentarer og
1 løsning

AnsiSring To TString

davs.

jeg har problem med følgende,

void __fastcall TForm2::ListBox1Click(TObject *Sender)
{
TIniFile *servers = new TIniFile(\"c:servers.ini\");
AnsiString text = ListBox1->Items->GetText();


servers->ReadSection(text ,Edit3->Text);
servers->ReadSectionValues(\"IP\", Edit1->Text.c_str());
servers->ReadSectionValues(\"PORT\", Edit2->Text);

delete servers;
}

men den kommer med en fejl som siger:
Cannot convert \"Ansistring\" to \"TString\"

Hjælp, hvordan retter jeg denne fejl ?
Zwonkie (bruger BCB4)
Avatar billede dmk Nybegynder
01. november 2000 - 11:50 #1
Kan du ikke bare skrive text.c_str() der hvor den brokker sig?


DMK
Avatar billede zwonkie Nybegynder
01. november 2000 - 13:08 #2
Nej det virker ikke, og vis det kan hjælpe så er der faktisk flere fejl end hvad jeg skrev. OK, så her er alle fejlene:

[C++ Error] Unit2.cpp(65): E2034 Cannot convert \'AnsiString\' to \'TStrings *\'.
[C++ Error] Unit2.cpp(65): E2343 Type mismatch in parameter \'Strings\' in call to \'_fastcall TIniFile::ReadSection(const AnsiString,TStrings *)\'.
[C++ Error] Unit2.cpp(66): E2034 Cannot convert \'char *\' to \'TStrings *\'.
[C++ Error] Unit2.cpp(66): E2343 Type mismatch in parameter \'Strings\' in call to \'_fastcall TIniFile::ReadSectionValues(const AnsiString,TStrings *)\'.
Avatar billede dmk Nybegynder
01. november 2000 - 13:15 #3
Okay, jeg kender ikke rigtigt til Borland og dens mange VCL typer.
Men ud fra hvad du giver mig, ser det ud til, at du forsøger at læse et dobbeltarray ind i en enkelt editboks. Det går nok ikke...
TStrings er et array af strenge, og dem kan du ikke smide ind i en TEdit. Og du kan naturligvis ikke få smidt et helt array ind i en enkelt ansistring.
Du skal oprette et TStrings objekt, give dette objekt til ReadSecton og ReadSectionValues, og derefter kan du behandle strengene i dit TStrings objekt en af gangen. Evt. kaste indholdet ind i en T-EtEllerAndetVisuelt der kan indeholde flere strenge (TListBox?)

DMK


Avatar billede zwonkie Nybegynder
01. november 2000 - 13:36 #4
Ok, tak, jeg prøver at lege lidt med det, men jeg giver dig ikke nogle point (hvertifald ikke lige nu). Jeg venter lige på, om nogle andre har nogle forslag.
Avatar billede zwonkie Nybegynder
01. november 2000 - 21:27 #5
OK, nu har jeg fundet ud af det, vis der er nogle som gerne vil vide hvordan jeg gjorde. Så kig her =).
{
TIniFile *servers = new TIniFile(\"c:servers.ini\");
TStringList *info = new TStringList();
int pos          = ListBox1->ItemIndex;
AnsiString name  = ListBox1->Items->Strings[pos];

servers->ReadSectionValues(name,info);
Edit3->Text = name;
Edit1->Text = info->Values[\"IP\"];
Edit2->Text = info->Values[\"PORT\"];

delete servers;
}
Zwonkie,
Btw, DMK du få sq de points
Avatar billede dmk Nybegynder
02. november 2000 - 10:55 #6
Du mangler vist lige en :
delete info;

;-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester