2016-06-26 5 views
1

Dies ist mein erster Beitrag hier.C++ Builder - Kopieren Sie einen Link zu einer Zeichenfolge basierend auf bestimmten Wörtern

Ich habe 4 Links in einem Memo oder TStringList:

http://website.com/text/book&id=20/programming 
http://website.com/text/book&id=10/programming 
http://website.com/text/book&id=40/programming 
http://website.com/text/book&id=30/programming 

Was ich tun möchte, ist, jeden Link zu kopieren, basierend auf seinem "id number", wie oben zu getrenntem String gezeigt, und NICHT auf der Grundlage seines Index in TMemo oder in TStringList.

Dies ist, weil die ID-Nummer jedes Links immer jedes Mal oder Dynamik (es ist eine zufällige ID) geändert wird.

Sagen wir also:

  1. , wenn die Verbindung containts id=10 dann sollte es zu einem "id10" genannt String kopiert werden.
    • Endergebnis ist id10 containts: http://website.com/text/book&id=10/programming
  2. , wenn die Verbindung containts id=30 dann sollte es zu einem "id30" genannt String kopiert werden.
    • Endergebnis ist id30 containts: http://website.com/text/book&id=30/programming
  3. so weiter, bis alle Verbindungen in einem separaten anderen String kopiert werden.

Ich habe versucht, dieses Problem mit substring Funktion, wie zu beheben:

int p = 0; 
String id10, id20, id30, id40; 
p = Memo1->Lines->Text.Pos("id=20"); 
if (p != 0) 
{ 
    id10 = Memo1->Lines->Text.SubString(p + 1, Memo1->Lines->Text.Length()); 
    ShowMessage(id10); 
} 

...... 

Leider ist es immer gescheitert. Weil ich zu C++ und der Sorte neu bin, aber ich weiß nicht, was mit allem zu tun ist. Es tut mir leid.

So brauche ich Ihre Hilfe, um diese Situation zu behandeln.

Vielen Dank.

Antwort

0

Der Aufruf von .Pos() aus der text -Eigenschaft ruft den Index für die Position der gefundenen Zeichenfolge im gesamten Text des Memo-Steuerelements ab. Hier ist ein kurzes Beispiel dafür, wie jede Zeile von einem TMemo in C++ Builder zu lesen:

AnsiString id10; 

for (int i = 0; i < Memo1->Lines->Count; i++) 
{ 
    AnsiString line = Memo1->Lines->Strings[i]; 

    if (line.Pos("id=10") > 0) 
    { 
     id10 = line; 
     ShowMessage(id10); 
    } 
} 

das obige Snippet verwenden, sollten Sie in der Lage sein, zu schließen, wie es tun, was Sie wollen.

+0

Es funktioniert, vielen Dank. – Michal

+0

@Michel Froh zu helfen! –

Verwandte Themen