Announcement

Collapse
No announcement yet.

Ein Paar Fragen(2)

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ein Paar Fragen(2)

    1: Ich möchte das wenn der Cuser bei den Buchstaben <i>Sch</i> steht das er dann in <br>
    der ListBox auch zu <i>Sch</i> hinspringt.Es können aber auch noch andere Einträge<br>
    in der ListBox stehen.<br>
    <br>
    2: Wie kann ich das <b>Favoriten</b>-Menu vom Explorer nach machen.Aber ich möchte die<br>
    Daten aus einer Ini Datei herrauslsen<br>
    <br>
    3: Ich möchte eine Klammersuche machen.Das soll so ausshen: "(..(..(...)..)..)"<br>
    Wenn man auf der Ersten Klammerauf steht soll er automatisch zu letzten Klammer springen
    <br>
    Ich nutze <b>Delphi 5 Standart</b><br>
    Bitte mit Beispiel beantworten!
    Gruß <b>Michael</b>

  • #2
    Sind die Fragen so schwer oder schlecht gestellt

    Comment


    • #3
      Nein, keines von beiden. Du solltes halt nur EINE Frage per Post stellen. Mich schrecken solche Multi-Fragen ab, bedenke jeder der antwortet opfert Zeit und Gehirnschmalz für Dich.<br>

      Zur Frage 3. Scanne den Text nach den Klammern. bei jeder göffneten Klammer erhöst Du eine interne Integer Variable, "Klammercount" und bei jeder schließenden Klammer wird diese Variable wieder dekrementiert. Sollte nun "KlammerCount" auf Null dekrementieren dann haste die abschließende Klammer gefunden.

      z.B.

      <pre>

      function KlammerCount(const Text: String): Integer;
      // zähle alle geöffneten Klammern
      var
      I: Integer;
      begin
      Result := 0;
      for I := 1 to Length(Text) do
      if Text[I] = '(' then Inc(Result);
      end;<br>

      function KlammerPos(const Text: String; KlammerIndex: Integer): Integer;
      var
      I,Count: Integer;
      begin
      Result := 0;
      Count := 0;
      for I := 1 to Length(Text) do
      case Text[I] of
      '(': Inc(Count);
      ')': if Count > 0 then
      begin
      Dec(Count);
      if Count = KlammerIndex then
      begin
      Result := I;
      Exit;
      end;
      end;
      end;
      end;<br>

      var
      I: Integer;
      begin
      for I := 0 to KlammerCount(Text) -1 do
      WriteLn('Klammer Nr.', I:5, 'an Position: ', KlammerPos(Text, I):5);
      end;<br>

      </pre>

      Hage

      Comment


      • #4
        Danke Hangen

        Comment


        • #5
          Ähm, ist aber nicht getestet, also keine Garantie meinerseits :

          Comment


          • #6
            Das geht jas garnicht...<br>
            Gruß <b>Michael</b&gt

            Comment


            • #7
              Doch! Es funktioniert anstandslos.
              Eine mögliche Fehlerquelle wäre, dass du bei einer VCL-Anwendung lange auf die Ausgabe von "WriteLn" warten kannst. Nimm mal die beiden Funktionen <b>KlammerCount</b> und <b>KlammerPos</b> von Hagen und benutze z.B. mal den folgenden Code in einem Button-Klick:

              <PRE>
              var
              s : string;
              i : integer;
              begin
              s := InputBox('Eingabe','Mit Klammern:','');
              for i := 0 to pred(KlammerCount(s)) do
              ShowMessage(inttostr(i) + ' Index an Position ' + inttostr(KlammerPos(s,i)));
              end;
              </PRE>

              Er zeigt die Klammer und das jeweilige Gegenstück problemlos an.
              Ich würd´s aber generell so ändern, dass er vielleicht bei <b>KlammerCount</b> auch die schließenden Klammern prüft und ggf. einen negativen Wert zurückliefert, an dem man erkennt, dass evtl. eine Klammer zuviel oder zuwenig da ist.

              Zu deinen anderen Fragen:

              1. Wo steht der Cursor? In einem Memo, einem RichEdit? Oder meinst du evtl. keine Listbox sondern eine Combobox inkl. Autovervollständigen wie beispielsweise im IE oder "Start/Ausführen"? Ich will sagen: du tippst ein paar Buchstaben ein, und die Combobox bietet dir automatisch die Auswahlmöglichkeiten an, die noch zur Verfügung stehen?? Dann schau mal auf die Borland-Seite, bzw. ins Delphi-Forum (
              http://www.delphi-forum.de/forum/Forum16/HTML/000622.html
              ), da wurde der Code von Borland für die ComboBox nämlich schon mal gepostet. (Von wem sage ich nicht ;o)

              Wenn du den gesuchten Text aber beispielsweise in ein "TEdit" eintippst, dann geht´s auch recht einfach. In der Eigenschaft <b>OnChange</b> dieses Edits lässt du etwa so nach dem Text in deiner ListBox suchen:

              <PRE>
              procedure TForm1.Edit1Change(Sender: TObject);
              var
              i : integer;
              begin
              if(Edit1.Text = '') then exit; // nichts geschrieben, raus<br>
              with ListBox1 do
              begin
              if(Items.Count = 0) then exit; // keine Einträge, weg hier!<br>
              for i := 0 to pred(Items.Count) do
              if(pos(Edit1.Text,Items.Strings[i]) > 0) then
              begin
              ItemIndex := i; break;
              end;
              end;
              end;
              </PRE>

              2. Du brauchst ein Menü und deine (oder eine) INI-Datei mit einer bestimmten Syntax. Du liest die Einträge ein und ordnest sie einem Menü zu. Fertig. (Wie man Einträge in ein Menü aufnimmt, findest du hier mehrfach im Forum, also spare ich´s mir.)

              Mathias

              Comment


              • #8
                Hallo Michael,<br>
                der folgende Link stellt Dir meine Nachbildung der Favoritengeschichte aus dem Explorer zur<br>
                Verfügung<br>
                <br>
                http://home.t-online.de/home/jensschumann/favoriten/favoriten_prg.zip<br>
                <br>
                Die Unit's 2 bis 5 enthalten die Favoriten-Forms.<br>
                Utils1.pas liefert die Variable ApplicationPath.<br>
                StatusBarEx.pas enthält einen TStatusbar Nachfahren, der Komponenten aufnehmen kann. (vorher installieren)<br>
                main.pas enthält das Hauptform der Test-EXE.<br>
                <br>
                Die Daten werden nicht in einer Ini-Datei gespeichert, sondern in einer Verzeichnisstruktur. Wie beim IE.<br>
                Deine Aufgabe besteht darin, sich durch den Source durchzuarbeiten. Wenn Du fragen hast, kannst Du dich<br>
                ruhig melden.<br>
                <br>
                Jens Schumann<br>
                P.S. gar nicht wird gar nicht zusammen geschriebe

                Comment


                • #9
                  @Jens, haste schon mal diesen Link probiert ?

                  http://home.t-online.de/home/jensschumann/.impressum.html

                  Hage

                  Comment


                  • #10
                    Hallo Hagen,<br>ja, der ist mir bekannt. Ich finde das aber nicht weiter tragisch. Oder sollte ich ?<br>Jens Schuman

                    Comment


                    • #11
                      Nö, soviel ich weiß gibts aber keine Möglichkeit das das von T. abgestellt wird

                      Comment


                      • #12
                        Danke werde ich mal machen wenn es nicht geht kann ich mich<br>
                        ja immer noch melden!!!
                        Gruß <b>Michael</b&gt

                        Comment

                        Working...
                        X