Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wort aus Textdatei laden (https://www.delphipraxis.net/128719-wort-aus-textdatei-laden.html)

BullsEye 4. Feb 2009 16:24


Wort aus Textdatei laden
 
Hallo DP'ler,

Ich hab ein kleines Problem, beim "herausfiltern" eines Wortes aus einer Textdatei!

Prinzip:

1) Textdatei in RichEdit laden
2) Einzelne Worte aus dem RichEdit in das Memo laden

Delphi-Quellcode:
procedure TfrmEditor.btnLadenClick(Sender: TObject);
begin
  IF OpenDialog.Execute THEN BEGIN
    RichEdit.Lines.LoadFromFile(OpenDialog.FileName);
    laden;
  END;
end;
Delphi-Quellcode:
PROCEDURE laden;
VAR
    name: String;
BEGIN
  // Name
  name := frmEditor.mConfig.Lines[235];
  Delete(name,1,Pos(#32,name));
  name := trim(name);
  Delete(name,Pos(#32,name),Length(name));
  frmEditor.edtName.text := name;
END;
soweit so gut. Funktionier an sich auch wohl super. ABER!
Die Zeile aus dem Richedit sieht so aus:
Zitat:

name "BullsEye"
Das Problem ist, mit dem oben genannten Code wird das so in das Edit geladen:

Zitat:

"BullsEye"
Ich will aber nur " BullsEye " (also ohne die " ) in dem Editfeld stehen haben. Wie kann man das machen? Ich hab nicht so das richtige gefunden. Rumprobiert habe ich auch schon viel.

Das hat folgende Gründe:

1) Optisch ist das net so dolle
2) Beim Speichern erhalte ich dann folgende Zeile:

Zitat:

name ""BullsEye""
Somit summieren sich die ""

DeddyH 4. Feb 2009 16:27

Re: Wort aus Textdatei laden
 
Entferne doch mit StringReplace die Anführungszeichen einfach.

scrat1979 4. Feb 2009 16:35

Re: Wort aus Textdatei laden
 
Hallo!!

Dann lass die Anführungszeichen beim Auslesen doch einfach weg:

Delphi-Quellcode:
PROCEDURE laden;
VAR
    name: String;
BEGIN
  // Name
  name := frmEditor.mConfig.Lines[235];
  Delete(name,1,Pos(#32,name)+1); // +1
  name := trim(name);
  Delete(name,Pos(#32,name)-1,Length(name)); // -1
  frmEditor.edtName.text := name;
END;
.. oder gleich mit COPY(...)
Delphi-Quellcode:
PROCEDURE laden;
VAR
    name: String;
BEGIN
  // Name
  name := copy(frmEditor.mConfig.Lines[235], pos('"', frmEditor.mConfig.Lines[235])+1, length(frmEditor.mConfig.Lines[235]));
  name := copy(name, 1, pos('"', name)-1);
  frmEditor.edtName.text := name;
END;
Grüße,
SCRaT

BullsEye 4. Feb 2009 16:40

Re: Wort aus Textdatei laden
 
Zitat:

Zitat von DeddyH
Entferne doch mit StringReplace die Anführungszeichen einfach.

Deddy mein Held :thumb:

Mit StringReplace geht das.

Delphi-Quellcode:
  // Name
  name := frmEditor.mConfig.Lines[235];
  Delete(name,1,Pos(#32,name));
  name := StringReplace(name, '"', '' , []);
  name := trim(name);
  Delete(name,Pos(#32,name),Length(name));
  name := StringReplace(name, '"', '' , []);
  frmEditor.edtName.text := name;
Allerdings ist der Lösungsvorschlag von scrat1979 kürzer und funktioniert ebenfals.

Aber kann man das ganze nun noch weiter kürzen? Sonst müsste ich allein den Code:
Delphi-Quellcode:
  // Vorwärts
  vor := frmEditor.mConfig.Lines[30];
  Delete(vor,1,Pos(#32,vor)+1);
  vor := trim(vor);
  Delete(vor,Pos(#32,vor)-1,Length(vor));
  frmEditor.edtVor.text := vor;
an die 30x haben, wegen der ganzen Variablen etc die ich laden möchte.

DeddyH 4. Feb 2009 16:42

Re: Wort aus Textdatei laden
 
Mach doch einfach 'ne Funktion draus, der Du die Zeilennummer übergibst und die Dir dann den gekürzten String zurückgibt.

scrat1979 4. Feb 2009 16:43

Re: Wort aus Textdatei laden
 
... hab grad meinen Post oben noch editiert....

noch ein Tip für die häufige Nutzung:


Delphi-Quellcode:
function laden(Quelle : String) : String;
VAR
    temp: String;
BEGIN
  temp := copy(Quelle, pos('"', Quelle)+1, length(Quelle));
  temp := copy(temp, 1, pos('"', temnp)-1);
 
  result := temp;
END;
Aufruf z.B. mit

Delphi-Quellcode:
   frmEditor.edtVor.text := laden(frmEditor.mConfig.Lines[30]);
... alles ungetestet!

SCRaT

BullsEye 4. Feb 2009 16:50

Re: Wort aus Textdatei laden
 
Zitat:

Zitat von scrat1979
... hab grad meinen Post oben noch editiert....

noch ein Tip für die häufige Nutzung:


Delphi-Quellcode:
function laden(Quelle : String) : String;
VAR
    temp: String;
BEGIN
  temp := copy(Quelle, pos('"', Quelle)+1, length(Quelle));
  temp := copy(temp, 1, pos('"', temnp)-1);
 
  result := temp;
END;
Aufruf z.B. mit

Delphi-Quellcode:
   frmEditor.edtVor.text := laden(frmEditor.mConfig.Lines[30]);
... alles ungetestet!

SCRaT

Hey, danke! So gefällt mir das viel besser ;)

Hm naja ich weiß gerade net so ganz, Deddy. Ab und zu muss ich ja net von der selben Stelle lesen

DeddyH 4. Feb 2009 16:53

Re: Wort aus Textdatei laden
 
Na, das ist doch fast das, was ich gesagt hatte, nur wird hier der komplette String übergeben, das geht natürlich auch.

BullsEye 4. Feb 2009 18:39

Re: Wort aus Textdatei laden
 
Also, Danke nochmals!

Ich hab das mit der Funktion gemacht!

Aber wie sieht das nun aus, wenn ich folgendes lesen möchte?

Zitat:

bind "o" "say Delphi Praxis ist super!"
Das o les ich ja mit der Funktion von oben aus. Aber wie kann ich jetzt alles hinter dem say lesen? Sprich ich möchte. das im Editfeld dann folgendes steht:


Delphi Praxis ist super!

Hinter say ist ein Leerzeichen, von da bis vor dem " am Ende.

Hatte da erst an den alten Code gedacht:

Delphi-Quellcode:
  say1 := frmEditor.mConfig.Lines[315];
  Delete(say1,1,Pos(#32,say1)+9);  
  say1 := trim(say1);
  Delete(vor,Pos(#32,say1)-1,Length(say1));
  frmEditor.edtSay1.text := say1;
Allerdings liest der dann nur das erste Wort "Delphi"

DeddyH 4. Feb 2009 18:41

Re: Wort aus Textdatei laden
 
Das ist nun eine Sache des Eingangsformates. Dementsprechend müsstest Du die Funktion aufbauen. Wie kann so ein String denn aussehen, d.h. welche Randbedingungen sind vorgegeben?


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz