AGB  ·  Datenschutz  ·  Impressum  







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

Textausschnitt in Edit's

Ein Thema von Mirco · begonnen am 16. Mai 2006 · letzter Beitrag vom 20. Mai 2006
Antwort Antwort
Mirco

Registriert seit: 6. Mai 2006
71 Beiträge
 
#1

Textausschnitt in Edit's

  Alt 16. Mai 2006, 16:34
Hallo

Ich habe folgendes Beispiel:

Delphi-Quellcode:
  for k := 0 to memo1.Lines.Count do
  begin
    feld := Copy(memo1.Lines.Strings[k], 2, Pos(' ', memo1.Lines.Strings[k]) - 2);
    comp := FindComponent(feld);
    if comp <> nil then
    begin
      cText := Copy(memo1.Lines.Strings[k], Pos('= "', memo1.Lines.Strings[k]) + 3, Pos('"; ', memo10.Lines.Strings[k]) - Pos('= "', memo1.Lines.Strings[k]) - 3);
      TEdit(comp).Text := cText;
Damit kann ich einzelne Bereiche aus einer Textdatei in Tedit's einlesen.
Die Namen der TEdit's müssen dann auch so heissen:
edit1 = c_firma -> wird Firma angezeigt
edit2 = c_vname -> wird Vorname angezeigt
edit3 = c_nname -> wird Nachname angezeigt
usw.

So schaut die Textdatei aus:

Delphi-Quellcode:
$c_knr = "Kundenummer"; /*Kundenummer*/
$c_firma = "Firma"; /*Firma*/
$c_vname = "Vorname"; /*Vorname*/
$c_nname = "Nachname"; /*Nachname*/
$c_str = "Strasse"; /*Strasse*/
$c_hnr = "Hausnummer"; /*Hausnummer*/
$c_plz = "PLZ"; /*PLZ*/
$c_ort = "Ort"; /*Ort*/
$c_land = "Land"; /*Land*/
$c_fon = "Telefon"; /*Telefon*/
$c_fax = "Fax"; /*Fax*/
$c_email = "Email"; /*Email*/

Ich habe dann versucht fogende Textdatei anzupassen (in Edit's anzuzeigen), kriegs nich hin.
Habe wahrscheinlich grundlegendes nicht verstanden, mag mir jemand dabei helfen?

Textdatei/Ausschnitt:

Code:
<?php
define('TEXT_MAINA', 'Test1');
define('TEXT_MAINB', 'Test2');
define('TEXT_MAINC', 'Test3');
define('TEXT_MAIND', 'Test4');

if ( ($new == 'files')...
   define('MAINE', 'Text');
   define('MAINF', 'Text1');
   define('MAING', 'Text2');
   define('MAINH', 'Text3');
   
   ...
Die Edit's heissen nun
TEXT_MAINA
TEXT_MAINB
TEXT_MAINC
usw.


Gruss Mirco
Mirco Hallenga
  Mit Zitat antworten Zitat
Mirco

Registriert seit: 6. Mai 2006
71 Beiträge
 
#2

Re: Textausschnitt in Edit's

  Alt 16. Mai 2006, 20:48
Hallo...
hab ich mich zu umständlich ausgedrückt?
Mirco
Mirco Hallenga
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#3

Re: Textausschnitt in Edit's

  Alt 16. Mai 2006, 20:49
Hallo,

meiner Meinung nach - ja

Edit: ok, habs verstanden - meld mich gleich wieder (vielleicht)
  Mit Zitat antworten Zitat
Mirco

Registriert seit: 6. Mai 2006
71 Beiträge
 
#4

Re: Textausschnitt in Edit's

  Alt 16. Mai 2006, 20:55
Okay...wenn nich erklär ich gerne alles nochmal anders.
THX
Mirco Hallenga
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#5

Re: Textausschnitt in Edit's

  Alt 16. Mai 2006, 21:23
Die Funktion ExtractString(sSource, sStart, sStop: String; a: Integer): String; separiert einen Teilstring zwischen zwei Strings, hier '(' und ')'.
Damit hast Du den Teil aus den Klammern.

Mit der Funktion ParseString(sTrenner, sString: String; iCount: Integer): String; parst Du das aus den Klammern.
Damit erhältst Du einmal den ersten Teil (iCount := 1), also den EditBox-Namen, und dann den zweiten Teil (iCount := 2), also den EditBox-Inhalt.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
   i: Integer;
   sEditBox: String;
   sText: String;
   comp: TComponent;
begin
   for i := 0 to memData.Lines.Count do
   begin
      if Pos('define', LowerCase(memData.Lines.Strings[i])) >0 then begin
         sEditBox := ParseString(', ', WhatsInBrackets(memData.Lines.Strings[i]), 1);
         sText := ParseString(', ', WhatsInBrackets(memData.Lines.Strings[i]), 2);
      end
      else Continue;

      comp := FindComponent(StringReplace(sEditBox, #039, '', [rfReplaceAll]));
      if comp <> nil then
      begin
         TEdit(comp).Text := (StringReplace(sText, #039, '', [rfReplaceAll]));
      end;
   end;
end;

function TForm1.WhatsInBrackets(sString: String): String;
begin
   Result := ExtractString(sString, '(', ')', 1);
end;

//Einen String parsen
function TForm1.ParseString(sTrenner, sString: String; iCount: Integer): String;
var
   i : Integer;
   sErgebnis : String;
begin
   Result := '';
   if Length(sString) > 0 then
   begin
      if sString[Length(sString)] <> sTrenner then
      begin
         sString := sString + sTrenner;
      end;
      for i := 1 to iCount do
      begin
         sErgebnis := Copy(sString, 0, Pos(LowerCase(sTrenner), LowerCase(sString)) - 1);
         sString := Copy(sString, Pos(LowerCase(sTrenner), LowerCase(sString)) + 1, Length(sString));
      end;
      Result := sErgebnis;
   end;
end;

//***** Einen String von bis extrahieren
function TForm1.ExtractString(sSource, sStart, sStop: String; a: Integer): String;
var
  SubStr, bck: String;
  Pos1, Pos2, i: Integer;
begin
   i := 0;
   while i < a do
   begin
      Pos1 := Pos(sStart, sSource);
      Pos2 := Pos(sStop, sSource);
      SubStr := Copy(sSource, Pos1 + Length(sStart), Pos2 - Pos1 - Length(sStart));
      Delete(sSource, Pos1, Pos2 - Pos1 + Length(sStop));
      if SubStr = 'then {nothing}
      else if bck = 'then
         bck := SubStr
      else
         bck := bck + #13#10 + SubStr;
      i := i + 1;
   end;
   Result := bck;
end;
  Mit Zitat antworten Zitat
Mirco

Registriert seit: 6. Mai 2006
71 Beiträge
 
#6

Re: Textausschnitt in Edit's

  Alt 16. Mai 2006, 21:57
Hallo s-off,
du hast es verstanden, ich immer noch nicht ganz, vom Prinzip her schon.
Z.B.
Delphi-Quellcode:
(memo1.Lines.Strings[i]), 1);
(memo1.Lines.Strings[i]), 2); hab ich nicht verstanden, wieso 1 & 2
dann
Delphi-Quellcode:
sEditBox := ParseString(', ', WhatsInBrackets(memo1.Lines.Strings[i]), 1);
sText := ParseString(', ', WhatsInBrackets(memo1.Lines.Strings[i]), 2);
usw. ...
Ich werde mir dein Beispiel reinziehen, will das auch verstehen.
Danke für deine spontane Hilfe.
Gruß
Mirco
Mirco Hallenga
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#7

Re: Textausschnitt in Edit's

  Alt 17. Mai 2006, 06:43
Hallo Mirco,

schau Dir die Parameter der Funktionen ExtractString und ParseString an.

Zitat:
(memo1.Lines.Strings[i]), 1);
(memo1.Lines.Strings[i]), 2); hab ich nicht verstanden, wieso 1 & 2
Die 1 und die 2 gehören zu der Funktion ParseString. Diese Funktion kann auf beliebige Teile eines String zugreifen, der durch Trenner geteilt worden ist; klassisches Beispiel, eine CSV-Datei:

sCSV := 'zwei;drei;vier;fünf;sechs;sieben';

ParseString(';', sCSV, 1) -> das erste Element des Strings => zwei
ParseString(';', sCSV, 2) -> das zweite Element des Strings => drei
ParseString(';', sCSV, 7) -> das siebte Element des Strings => gibt es hier

Zitat:
sEditBox := ParseString(', ', WhatsInBrackets(memo1.Lines.Strings[i]), 1);
Hier entsteht der String sEditBox aus zwei Operationen. Zuerst führe ich die Funktion WhatsInBrackets auf den String aus dem Memo aus. Dadurch bekomme ich das, was in der Zeile zwischen den beiden Klammern steht, z.B. 'TEXT_MAINA', 'Test1'.
Diesen String parse ich dann für sEditBox mit Trenner ', ' und iCount := 1 und bekomme TEXT_MAINA.
  Mit Zitat antworten Zitat
Mirco

Registriert seit: 6. Mai 2006
71 Beiträge
 
#8

Re: Textausschnitt in Edit's

  Alt 17. Mai 2006, 16:58
Hallo s-off,

Danke für deine Erklärungen, das hilft weiter.
Kann ich auch den umgekehrten Weg gehen und die ausgelesenen Edit's wieder in der Textdatei speichern?
Noch ein Beispiel wäre echt schön.

Viele Grüsse
Mirco
Mirco Hallenga
  Mit Zitat antworten Zitat
Mirco

Registriert seit: 6. Mai 2006
71 Beiträge
 
#9

Re: Textausschnitt in Edit's

  Alt 18. Mai 2006, 17:46
Hätte ich die neue Frage besser in einem neuen Thread gestellt?
Viele Grüße
Mirco
Mirco Hallenga
  Mit Zitat antworten Zitat
Mirco

Registriert seit: 6. Mai 2006
71 Beiträge
 
#10

Re: Textausschnitt in Edit's

  Alt 20. Mai 2006, 09:55
Hallo...
also ich versuche es noch einmal, glaube ich hab's nich deutlich genug erklärt.

Kurz zu dem was ich gerne machen würde.
Ich möchte die Testdatei auslesen und bestimmte Bereiche in den Edit's anzeigen lassen.
(Dank deiner Hilfe s-off klappt das ja)

Nun wird der Text der in den Edit's steht editiert bzw. verändert.
Es fehlt mir der Schritt die Edit's zu speichern, d.h. die zuvor ausgelesenen Stellen,
mit den veränderten Edit's zu ersetzen und zu speichern.
Beim nächsten auslesen der Textdatei würde dann in den Edit's der neue Text stehen.

Ich hoffe das ich mich nun einigermaßen verständlich ausgedrückt habe.

Grüße
Mirco
Mirco Hallenga
  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 14:09 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