2016-05-22 6 views
-2

Ich möchte einen einfachen Inhalt Spinner schaffen, wie dies funktionieren wird:Spinning Content in Delphi?

  1. ich mit einigen Begrenzungszeichen einen Text in Memo1 eingeben (zum Beispiel {This is a simple text|Here We can find a simple text|Here are just some regular words} {which I want to spin|that I want to change|that I need to change}, {please|I need to know}, {what can I do?|how can I do it?} {Thank You|Thanks}).

  2. Die Funktion wird die Strings basierend auf diesen Trennzeichen zufällig verteilen und sie in Memo2 ausgeben. Eine zufällige Ausgabe dafür wäre "Hier können wir einen einfachen Text finden, den ich ändern muss, bitte, wie kann ich es tun? Danke".

Es ist wichtig, die Zeilenumbrüche und Leerzeichen zu behalten. Eine andere wichtige Sache ist, niemals identische Ergebnisse auszugeben.

Also im Grunde wird es die Wörter/Sätze basierend auf den Trennzeichen sortieren und dann zufälligen Inhalt basierend auf was ich will erstellen. Es sieht einfach aus, ich könnte es mit Zahlen machen, kann aber nicht wirklich so denken, es mit Text zu machen. Irgendeine Hilfe?

+0

Sie würden uns gerne für Sie den Code schreiben? –

+0

@DavidHeffernan Nein, ich brauche nur eine Richtung. Wo soll ich anfangen? Ich habe wirklich keine Ahnung, wie es geht. Ich brauche den Code nicht, nur die Idee. Ich weiß eigentlich nicht, wie man die Zeichenfolge basierend auf diesen Trennzeichen aufteilt. Dies wird große Zeit helfen. –

+0

Warum machen Sie dann keine Websuche zum Aufteilen von Strings? Das ist gut abgedeckt. Bitte lies auch die [Hilfe], um zu erfahren, welche Art von Fragen hier gut passen. –

Antwort

1

Nur ein einfaches Beispiel, um loszulegen.

uses 
    StrUtils, System.Types, Math; 

function MakeSentence(const AText, ADelimiter: string): string; 
var 
    _SentenceParts: TStringDynArray; 
    _SubParts: TStringDynArray; 
    i: Integer; 
begin 
    Result := ''; 

    if not AnsiContainsText(AText, '{') then // ...other checks 
    Exit; 

    _SentenceParts := SplitString(AText, '}'); 
    for i := 0 to Length(_SentenceParts) - 1 do 
    begin 
    _SentenceParts[i] := Copy(Trim(_SentenceParts[i]), 2, 
     Length(_SentenceParts[i])); 
    // Punctuation, etc 
    _SentenceParts[i] := StringReplace(_SentenceParts[i], '{', '', 
     [rfIgnoreCase]); 
    end; 

    for i := 0 to Length(_SentenceParts) - 1 do 
    begin 
    _SubParts := SplitString(_SentenceParts[i], ADelimiter); 
    if Length(_SubParts) > 0 then 
     Result := Result + ' ' + _SubParts[RandomRange(0, Length(_SubParts) - 1)]; 
    end; 
end; 

Verbrauch:

procedure TForm1.BitBtn1Click(Sender: TObject); 
begin 
    Memo2.Text := MakeSentence(Memo1.Text, '|'); 
end; 

enter image description here

+0

Wow Mann, Du hast den Job schon für mich erledigt, vielen Dank, Du kannst Dir nicht vorstellen, wie dankbar ich gerade bin, danke –