AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Stringlist, FindComponent und Edit Felder inkl deren inhalt
Thema durchsuchen
Ansicht
Themen-Optionen

Stringlist, FindComponent und Edit Felder inkl deren inhalt

Ein Thema von sharkx · begonnen am 28. Mai 2004 · letzter Beitrag vom 28. Mai 2004
Antwort Antwort
sharkx

Registriert seit: 25. Feb 2003
Ort: St. Ingbert
211 Beiträge
 
Delphi 7 Enterprise
 
#1

Stringlist, FindComponent und Edit Felder inkl deren inhalt

  Alt 28. Mai 2004, 19:05
Hallo !


Folgendes Problem:

Ich habe 4 Edit Felder mit dem inhalt (bsp) 4A569 5f433 3t598 6g5f4

nun möchte ich in einer for schleife die buchstaben entfernen. dazu habe ich folgendes gebastelt, funktioniert jedoch nicht :(

Delphi-Quellcode:
function CheckKey(List: TStringList): boolean;
var
  i,x: Integer;
begin
  Result := false;

  for x := 1 to 4 do
    begin
      for i := length(List.Strings[x]) downto 1 do
         delete(List.Strings[x],i,1);
      ShowMessage(List.Strings[x]);
    end;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  List: TStringList;
  i: Integer;
  s: TComponent;
begin
  for i := 1 to 4 do
    begin
      s := FindComponent('Edit' + IntToStr(i));
      List := TStringList.Create;
      List.Add(s.Name);
      List.Free;
    end;
  CheckKey(List);
end;

wäre nett wenn mir jemand da zum ende helfen könnte :)
Programming today is a race between Software Engineers striving to build bigger and better idiot-proof Programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning!
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Stringlist, FindComponent und Edit Felder inkl deren inh

  Alt 28. Mai 2004, 19:07
Dein Problem ist, dass du die Indezes bei 1 beginnen lässt. Die beginnen in Delphi aber bei 0. Richtig wäre also das hier:
Delphi-Quellcode:
function CheckKey(List: TStringList): boolean;
var
  i,x: Integer;
begin
  Result := false;

  for x := 1 to 4 do
    begin
      for i := length(List.Strings[x-1]) downto 1 do
         delete(List.Strings[x-1],i,1);
      ShowMessage(List.Strings[x-1]);
    end;
end;
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  List: TStringList;
  i: Integer;
  s: TComponent;
begin
  for i := 1 to 4 do
    begin
      s := FindComponent('Edit' + IntToStr(i));
      List := TStringList.Create;
      List.Add(s.Name);
      List.Free;
    end;
  CheckKey(List);
end;
Diese Prozedur macht für mich keinen Sinn, da du 4 mal eine Stringlist erstellst, dann etwas hinzufügst, wieder freigibst und anschließend versuchst, die Zeichen zu löschen. Erstelle die Liste einmal und gib sie auch nur einmal frei...
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
sharkx

Registriert seit: 25. Feb 2003
Ort: St. Ingbert
211 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: Stringlist, FindComponent und Edit Felder inkl deren inh

  Alt 28. Mai 2004, 19:33
ok ..
warum bei 0 anfangen? es gibt doch garkei Edit0 bei mir, also kann ich doch bei 1 anfangen? das eine mal durchlaufen habe ich mir doch gespart !

aber nichts desto trotz ...

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  List: TStringList;
  i: Integer;
  s: TComponent;
begin
  List := TStringList.Create;
  for i := 0 to 4 do
    begin
      s := FindComponent('Edit' + IntToStr(i));
      List.Add(s.Name); // <--- hier gibts nen error
    end;
  List.Free;

  CheckKey(List);
end;

function CheckKey(List: TStringList): boolean;
var
  i,x: Integer;
begin
  Result := false;

  for x := 0 to 4 do
    begin
      for i := length(List.Strings[x]) downto 1 do
        List.Strings[x] := Copy(List.Strings[x], 0, length(List.Strings[x]));
      ShowMessage(List.Strings[x]);
    end;
end;
funktioniert jedoch noch immer nicht


[edit] Wäre es nich sinnvoller das ganze in einen Stream zu laden?
Programming today is a race between Software Engineers striving to build bigger and better idiot-proof Programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning!
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#4

Re: Stringlist, FindComponent und Edit Felder inkl deren inh

  Alt 28. Mai 2004, 19:46
Also nochmal, ich hab mich dabei vielleicht nicht ganz klar ausgedrückt: Überall bei den Kompos etc. wo es arrays gibt (außer bei deinen eigenen, dynamische von diesem wiederum ausgenommen), beginnen die Arrayindezes bei 0. Also sieht die erste Prozedur (CheckKey) folgendermaßen aus:
Delphi-Quellcode:
  for x := 0 to 3 do //Wichtig: 4 Elemente, Index geht von 0 bis 3!
    begin
      for i := length(List.Strings[x]) downto 1 do
        List.Strings[x] := Copy(List.Strings[x], 0, length(List.Strings[x]));
      ShowMessage(List.Strings[x]);
    end;
Das Problem mit der unteren (Button2Click) hast du dir selbst gemacht, da du mich falsch verstanden hast. Beginne mit den Indezes bei den Edits bei 1, und es wird funktionieren:
Delphi-Quellcode:
  for i := 1 to 4 do
    begin
      s := FindComponent('Edit' + IntToStr(i));
      List.Add(s.Name); //Jetzt gibts keinen Error
    end;
Bezüglich dem Stream: k.A., welche Idee hsst du denn dazu?

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Stringlist, FindComponent und Edit Felder inkl deren inh

  Alt 28. Mai 2004, 20:16
Zitat von alcaeus:
List.Strings[x] := Copy(List.Strings[x], 0, length(List.Strings[x]));
Erreicht man in einem String über den Index 0 wirklich das erste Zeichen im String?
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Stringlist, FindComponent und Edit Felder inkl deren inh

  Alt 28. Mai 2004, 20:22
Zitat von sharkx:
Ich habe 4 Edit Felder mit dem inhalt (bsp) 4A569 5f433 3t598 6g5f4

nun möchte ich in einer for schleife die buchstaben entfernen. dazu habe ich folgendes gebastelt, funktioniert jedoch nicht
Ich kann den Code der Buchstaben aus einem String entfernen soll nicht sehen
Der oben diskutierte Code entfernt mit Sicherheit keine Buchstaben.
Ich habe gerade eine function von Hagen Reddmann gefunden. Die entfernt Buchstaben aus einem
String. Und zwar ziemlich fix.

Delphi-Quellcode:
function DeleteNonNumbers(const Value: String): String;
var
  I: Integer;
  P: PChar;
begin
  SetLength(Result, Length(Value));
  P := PChar(Result);
  for I := 1 to Length(value) do
    if Value[I] in ['0'..'9'] then
    begin
      P^ := Value[I];
      Inc(P);
    end;
  SetLength(Result, P - PChar(Result));
end;
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#7

Re: Stringlist, FindComponent und Edit Felder inkl deren inh

  Alt 28. Mai 2004, 20:58
Ja, man bekommt das erste Zeichen, welches normalerweise das ASCII-Zeichen für die Länge ist. Das erste Nutzzeichen ist jenes mit dem Index 1.
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:40 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