AGB  ·  Datenschutz  ·  Impressum  







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

TStrings[Memo] mit Variable steuern

Ein Thema von danku · begonnen am 12. Mai 2006 · letzter Beitrag vom 18. Mai 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#1

TStrings[Memo] mit Variable steuern

  Alt 12. Mai 2006, 18:40
jo mein programm nimmt immer mehr gestalt an.
jetzt stehe ich noch vor folgenden problem:

beim ereignis ONCREATE wird eine textdatei in TMemo gelesen und die Items mit dem Inhalt (textfile) gelistet.
desweiteren kann man mit einer TCheckbox eine TStringGrid bearbeiten.
sobald man auf die checkbox clickt, werden sonderzeichen (wie standard '_' (entspricht const Search_Text = '_') eingestellt) gelöscht.

damit die vielfalt dieser sonderzeichen erhöht wird (durch user), würde ich gerne über das oben angesprochene TMemo den inhalt der Items mit in die const Search_Text übernehmen.
vom sinn her const Search_Text= lbfilter.items logisch dass das nicht so geht. aber kann mir da einer einen richtigen tipp geben?

[edit=MrSpock]Titel auf Wunsch des Erstellers geändert. Mfg, MrSpock[/edit]
  Mit Zitat antworten Zitat
pszopp

Registriert seit: 7. Sep 2005
Ort: Alsdorf
95 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Konstantenzuweisung [von tmemo.items]

  Alt 12. Mai 2006, 19:55
Ich bin mir noch nicht sicher, ob ich dein Problem richtig verstanden habe,
aber vielleicht hilft eine Instanz von TStringList weiter.

Damit kannst du eine dynamische Anzahl von Strings speichern.

Delphi-Quellcode:
// Deklaration
var SonderZeichen : TStringList;

...

initialization
  // Erzeugt das Objekt beim Programmstart.
  SonderZeichen := TStringList.Create;
finalization
  // Gitb es kurz vor Programmende wieder frei.
  FreeAndNil(SonderZeichen);
end;
Typische Operationen mit einer Liste sind.
1) Einfügen (SonderZeichen.Add)
2) Löschen (SonderZeichen.Delete)
3) Laden & Speichern (SonderZeichen.LoadFromFile & SonderZeichen.SaveToFile)


Hoffe das hilft ?!?
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Konstantenzuweisung [von tmemo.items]

  Alt 13. Mai 2006, 10:50
kann man das nicht anders machen?
sobald ich Search_Text als Variable von TStringlist deklariere, spinnt meine anweisung:

StringGridReplace(sgfiles,Search_text,' ');
  Mit Zitat antworten Zitat
pszopp

Registriert seit: 7. Sep 2005
Ort: Alsdorf
95 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Konstantenzuweisung [von tmemo.items]

  Alt 13. Mai 2006, 10:56
Hilft das weiter?

Delphi-Quellcode:
for lk := 0 to Search_text.Count - 1 do begin
  StringGridReplace(sgfiles, Search_text[lk], ' ');
end; // for lk
Gruß,
pszopp
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: Konstantenzuweisung [von tmemo.items]

  Alt 13. Mai 2006, 11:20
danke das hilft mir erstmal.

Delphi-Quellcode:
Search_Text := TStringList.Create;
  Search_Text.Add(edfilter.text);

  lbfilter.Items.AddStrings(Search_Text);

  Search_Text.free;
funzt aber net richtig.
wenn man bei dem filter z.b. alben-dreams eingibt (was ja gelöscht werden soll)
kommt eine fehlermeldung "zugriffsverletzung"
  Mit Zitat antworten Zitat
pszopp

Registriert seit: 7. Sep 2005
Ort: Alsdorf
95 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Konstantenzuweisung [von tmemo.items]

  Alt 13. Mai 2006, 14:24
Wo genau tritt die Zugriffsverletzung denn auf?
Wieso reicht es nicht, wenn du die Filter nur in der Listbox speicherst?
(Vielleicht kannst du ja ein bißchen mehr Code posten?)

Gruß,
pszopp
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Konstantenzuweisung [von tmemo.items]

  Alt 13. Mai 2006, 14:57
hier kann man den filter hinzufügen:

Delphi-Quellcode:

//Hinzufügen eines Neuen Filters

procedure Tfmformat.baddClick(Sender: TObject);
var counter,i:integer;

begin
if lbfilter.items.indexof (edfilter.text) > -1 then
  begin
    showmessage ('Redundanzproblem!');
    edfilter.SetFocus;
  end
  else begin


  Search_Text := TStringList.Create;
  Search_Text.Add(edfilter.text);

  lbfilter.Items.AddStrings(Search_Text);

  Search_Text.free;
  end;
lbfilter.Sorted:=true;
edfilter.Clear;
counter:= lbfilter.Items.Count;
label2.caption:='(' + inttostr(counter) + ')';
if label2.caption ='(0)'
then label2.caption:='()';

Statusbar1.Panels[0].text:='Geändert';

change:=true;
end;
und das ist der button "anwenden" für die erste checkbox...


Delphi-Quellcode:
...
   //Sonderzeichen entfernen anhand von Search_Text in sgfiles.cells[0,i]
   if checkbox1.checked
      then if not(length(sgfiles.Cells[0,1])>1)
              then
              else begin

              for lk := 0 to Search_text.Count - 1 do begin
              StringGridReplace(sgfiles, Search_text[lk], ' ');
              end;
              
              //StringGridReplace(sgfiles,Search_text,' ');
              //StringGridReplace(sgfiles,Search_Text,'');
              Statusbar1.Panels[1].text:='Geändert';
              change:=true;

...

initialization
  // Erzeugt das Objekt beim Programmstart.
  SonderZeichen := TStringList.Create;
finalization
  // Gitb es kurz vor Programmende wieder frei.
  FreeAndNil(SonderZeichen);
end;

end.
kann man überhaupt mit der variablen Search_Text in einer stringlist (tlistbox mit mehreren items) arbeiten?

hab gerad gemerkt das die fehlermeldung (anhang, runtime fehlermedlung) immer im zusammenhang bei formclose oder eben man den filter andwenden will (also Search_text wird verwendet) kommt,
bloß schlimmes steht da nicht drin. nur ein messagedlg ob speichern ja oder nein.
Miniaturansicht angehängter Grafiken
error_628.jpg  
  Mit Zitat antworten Zitat
pszopp

Registriert seit: 7. Sep 2005
Ort: Alsdorf
95 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Konstantenzuweisung [von tmemo.items]

  Alt 14. Mai 2006, 19:18
Wie sieht es denn damit aus?
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    lbFilter: TListBox;
    edFilter: TEdit;
    Label2: TLabel;
    StatusBar1: TStatusBar;
    BtnAdd: TButton;
    procedure BtnAddClick(Sender: TObject);
  private
    Changed : Boolean;
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.BtnAddClick(Sender: TObject);
var counter,i : Integer;
    NewItem : string;
begin
  NewItem := edFilter.Text;
  if lbfilter.items.indexof (NewItem) > -1 then
  begin
    showmessage ('Redundanzproblem!');
    edfilter.SetFocus;
  end
  else begin
    lbfilter.Items.Add(NewItem);
  end;

  lbfilter.Sorted := true;
  edfilter.Clear;
  counter := lbfilter.Items.Count;
  label2.caption:='(' + inttostr(counter) + ')';
  if (label2.caption ='(0)') then
    label2.caption:='()';

  Statusbar1.Panels[0].text:='Geändert';
  Changed := true;
end;

...
 //Sonderzeichen entfernen anhand von Search_Text in sgfiles.cells[0,i]
   if checkbox1.checked then begin
     if (length(sgfiles.Cells[0,1])>1) then begin
       for lk := 0 to lbFilters.Items.Count - 1 do begin
         StringGridReplace(sgfiles, lbFilters.Items[lk], ' ');
       end; // for lk

       //StringGridReplace(sgfiles,Search_text,' ');
       //StringGridReplace(sgfiles,Search_Text,'');
       Statusbar1.Panels[1].text:='Geändert';
       changed := true;
     end; // length
   end; // Checked
...
end.
Hilft dir das???
www.pstipp.de | Tippseite zur Formel 1 und Fußball WM/EM - kostenlos und Just-For-Fun
  Mit Zitat antworten Zitat
Benutzerbild von danku
danku

Registriert seit: 9. Apr 2006
Ort: 32-bit Adressbus
181 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Konstantenzuweisung [von tmemo.items]

  Alt 14. Mai 2006, 19:42
auf den ersten blick siehts ja identisch aus.
ich schau mir das morgen nachmittag an.
danke dir erst mal.

okay habs mirs angeschaut.
aber das problem wäre leider immer noch nicht gelöst-


hat einer ahnung mit TStringlists?
  Mit Zitat antworten Zitat
marlem

Registriert seit: 10. Mär 2006
59 Beiträge
 
Delphi 6 Personal
 
#10

Re: Konstantenzuweisung [von tmemo.items]

  Alt 15. Mai 2006, 16:00
hi,

hast mir ne pm geschickt, aber ich kapiere nicht ganz dein problem!
das verhindern von dubletten in der stringliste geht mit der eigenschaft "sorted" auf true
und "Duplicates" auf dupIgnore! siehe hilfe!
du darfst aber dann den text nicht über die stringlisten-eigenschaft "Text" zuweisen,
sondern "add" oder "addstrings" geht glaube auch!

ne Stringlistenverarbeitung immer so machen:
Delphi-Quellcode:
sl := TStringlist.create;
try
hier die Verarbeitung!

finally
sl.free;
end;
hoffe es half bißchen.
ansonsten nochmal fragen!
gruß und danke

Markus
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 05:35 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