AGB  ·  Datenschutz  ·  Impressum  







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

String zerlegen

Ein Thema von crasher1985 · begonnen am 6. Nov 2007 · letzter Beitrag vom 6. Nov 2007
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: String zerlegen

  Alt 6. Nov 2007, 09:03
Zitat von crasher1985:
So dann noch eine Letzte frage für den heutigen tag wie kann ich die Checkbox ausgrauen jeodch nciht deaktivieren.
Das macht man über's Deaktivieren (Delphi-Referenz durchsuchenEnabled.)

Aber erstelle zukünftig pro Frage einen neuen Thread!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: String zerlegen

  Alt 6. Nov 2007, 09:06
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  CheckBox1.AllowGrayed := true;
  CheckBox1.State := cbGrayed;   
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#13

Re: String zerlegen

  Alt 6. Nov 2007, 22:43
hallo alexander,

hab mal kurz die routine ausprobiert, sobald man ein paar anführungszeichen einsetzt, trennt er dennoch... obgleich er da nichts mehr machen dürfte...

IMHO ist die routine auch noch nicht ganz fertig ...

noch viel spass beim weiterentwickeln...



Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils, Classes, Windows ;
{-----------------------------------------------------------------------------
  Description:  Zerteilt einen String; Zerteilung erfolgt anhand von
                Teilstrings, die nicht mit ausgegeben werden
  Author:      Alexander Roth
  Procedure:    DivideList
  Arguments:    s:string; const Separator, DivideList:TStrings
-----------------------------------------------------------------------------}

procedure DivideList(s:string; const Separator, DivideList:TStrings);

    function FindNext:TPoint; // sucht den als ersten vorkommenden Seperator

    var i:integer;
        tempstelle:integer;
        schongefunden:boolean; // führe ich ein, damit er auf jeden Fall
                               // die 1. Fundstelle aufschreibt
    begin
      schongefunden:=false;
      result.y:=0;
      result.x:=0;
      for i:=0 to Separator.Count-1 do begin

        tempstelle:=pos(Separator.Strings[i], s);
        //schreibt die als nächstes kommende Trennzeichenstelle auf
        if (tempstelle > 0)
           and ((tempstelle < result.y) or not schongefunden) then

           // es darf niemals sein dass er eine stelle
           // aufschreibt die nicht da ist
        begin
          schongefunden:=true;
          result.y:=tempstelle;
          result.x:=i;
        end;
      end;
    end;

var tempS:string;
    find:TPoint; // y = Fundstelle, x = Index des Separators;

                  // hier habe ich keinen eigenen Typ gewählt,
                  // der übersichtlicher wäre, um die Implementierung des
                  // Codes einfacher zu gestalten
begin
  if assigned(Separator) and assigned(DivideList) then

  begin
    if (s <> '') and (Separator.Count > 0) then // falls man irgendwelche

                                                // schrottige Angaben gemacht hat
                                                // wird man hier rausgeworfen
    begin
      find:=FindNext;

      while (find.y > 0) and (length(s) > 0) do
      begin
        tempS:=copy(s, 1, find.Y-1);

        if length(tempS) > 0 then
          DivideList.Append(tempS);
        delete(s, 1, find.y-1 + length(Separator[find.x]));

        find:=FindNext;
      end;
      if length(s) > 0 then
        DivideList.Append(s);
    end;
  end;

end;

procedure DemoDivideString;
const s = ',;,''hallo|;guda,ggt;ds|gh,d;'',;";;,f;,g",'; //Ein paar Satzzeichen
var StrList, NewList:TStringlist; //und schon trennt die Routine
    i:integer; //unsauber
begin
  StrList:=TStringlist.Create;
  NewList:=TStringlist.Create;
  try
    StrList.Append(',');
    StrList.Append(';');
    StrList.Append('|');

    DivideList(s, StrList, NewList);
    for i :=0 to NewList.Count-1 do
      writeln(I:3, ' ', NewList.Strings[i]);
  finally
    NewList.free;
    StrList.free;
  end;
end;
begin
 DemoDivideString;
 readln;
end.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 18:04 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