Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Schleifen problem (https://www.delphipraxis.net/101124-schleifen-problem.html)

SaFu 8. Okt 2007 19:44


Schleifen problem
 
Hi

habe mal ein schleifen Problem

bekomme es leider nicht hin die nächsten vier zeilen von meinem memo umzuschreiben

die erste zeile von memo1 wird mit der zweiten zeile vom memo überschrieben aber wie bekomme ich den rest hin

Delphi-Quellcode:
 procedure TForm1.sysconfsumschreiben;
var alt,neu : String;
    sl: TStringList;
     i: integer;
begin
   alt:=(ExtractFilePath(ParamStr(0)) + '\Dateisysconfs\SYSCONF.S');
   neu:= (ExtractFilePath(ParamStr(0)) + '\Dateisysconfs\neueSysconf\Sysconf.s');
   sl := TStringList.Create;
  try
    sl.LoadFromFile(alt);
     for i := 0 to Pred(sl.Count) do

      sl[i] := StringReplace(sl[i],Memo1.Lines[0],Memo2.Lines[0],[rfReplaceAll]);// hier
      sl.SaveToFile(neu);
  finally
    FreeAndNil(sl);
  end;
end;
danke schonmal

Gruss An DeddyH

mkinzler 8. Okt 2007 19:50

Re: Schleifen problem
 
Was soll der Code machen?

SaFu 8. Okt 2007 19:53

Re: Schleifen problem
 
Es wird aus einer datei 4 zeilen ins memo1 geladen die werden dann mit einem Edit feld umgeschrieben

Dieses wird dann in memo2 angezeigt

jetzt schreibe ich die 4 zeilen wieder um und dann soll die datei wieder gespeichert werden

also ich will einfach nur

Delphi-Quellcode:
  sl[i] := StringReplace(sl[i],Memo1.Lines[0],Memo2.Lines[0],[rfReplaceAll]);// hier
diese zeile viermal hochzählen lassen

SaFu 8. Okt 2007 20:59

Re: Schleifen problem
 
kann mir da keiner helfen??? :cry:

Luckie 8. Okt 2007 21:01

Re: Schleifen problem
 
Dein letztes Posting diesbezüglich ist gerade mal eine Stunde alt. :warn: Wenn es jemand weiß, wird er sich schon melden.

mkinzler 8. Okt 2007 21:02

Re: Schleifen problem
 
Ich versteh halt immer noch nicht, was mit was ersetzt werden soll. Mit dem Code ersetzte du ja in der Stringliste den Inhalt eines Memos mit dem Inhalt eines anderes Memos.

SaFu 8. Okt 2007 21:05

Re: Schleifen problem
 
Liste der Anhänge anzeigen (Anzahl: 1)
Genau aber nur die erste bzw. den index 0 und ich wies net wie ich das anstellen kann das ich den index 0,1,2,3 ersetzen kann ich hänge das programm mal an

mkinzler 8. Okt 2007 21:12

Re: Schleifen problem
 
Du könntest auch Schleife weglassen und die Liste auf einmal ersetzen:
Delphi-Quellcode:
sl.Text := StringReplace(sl.Text,Memo1.Lines[0],Memo2.Lines[0],[rfReplaceAll]);

SaFu 8. Okt 2007 21:17

Re: Schleifen problem
 
meinst du so

Delphi-Quellcode:

.
.
.
 sl.Text := StringReplace(sl.Text,Memo1.Lines[0],Memo2.Lines[0],[rfReplaceAll]);
   sl.Text := StringReplace(sl.Text,Memo1.Lines[1],Memo2.Lines[1],[rfReplaceAll]);
    sl.Text := StringReplace(sl.Text,Memo1.Lines[2],Memo2.Lines[2],[rfReplaceAll]);
      sl.Text := StringReplace(sl.Text,Memo1.Lines[3],Memo2.Lines[3],[rfReplaceAll]);
.
.
.
end;
das geht doch nicht.

mkinzler 8. Okt 2007 21:26

Re: Schleifen problem
 
Was steht den in den Memos drin?

SaFu 8. Okt 2007 21:30

Re: Schleifen problem
 
Das hier im Memo1

Delphi-Quellcode:
DESK-0 = TASK(0) LPT(PP0) WX() WY() FONT() TITLE(Server) START(pw) //zeile1 (index 0)
DESK-1 = TASK(1) LPT(PP0) WX() WY() FONT() TITLE(Server) START(pw) //zeile2 (index 1)
DESK-2 = TASK(2) LPT(PP0) WX() WY() FONT() TITLE(Server) START(pw) //zeile3 (index 2)
DESK-3 = TASK(3) LPT(PP0) WX() WY() FONT() TITLE(Server) START(pw) //zeile4 (index 3)
und soll gegen das hier z.b (zahl ist variabel eingebbar und wird immer hochgezählt) erstzt werden

Delphi-Quellcode:
DESK-0 = TASK(33) LPT(PP0) WX() WY() FONT() TITLE(Server) START(pw) //zeile1 (index 0)
DESK-1 = TASK(34) LPT(PP0) WX() WY() FONT() TITLE(Server) START(pw) //zeile2 (index 1)
DESK-2 = TASK(35) LPT(PP0) WX() WY() FONT() TITLE(Server) START(pw) //zeile3 (index 2)
DESK-3 = TASK(36) LPT(PP0) WX() WY() FONT() TITLE(Server) START(pw) //zeile4 (index 3)

mkinzler 8. Okt 2007 21:32

Re: Schleifen problem
 
Und in der datei stehen die Inhalte des 1. Memos drin?

SaFu 8. Okt 2007 21:34

Re: Schleifen problem
 
das steht in der ganzen datei
Delphi-Quellcode:

[SYSTEM]
RPCI = TCP(16000)

[DEVICE]
MD6 = C:\Programme\XTalk

IF0 = D:\Medi\INST         ; Installationsdateien (INST*.P...)
IS0 = D:\Medi\SYS          ; Hilfsprogramme (RTSI, SVSI, ...)
IP0 = D:\Medi\PRG4          ; Medi-Programme

MS0 = D:\Medi\PDATEN       ; PALPHA,PSTAMM,PDATEN,PLINK,PDFORM,HBLISTE
MS1 = D:\Medi\HDATEN       ; BT,TK,RECALL,WBUCH,FIBU,LABDAT,FORM,PLRD,UVRD
MS2 = D:\Medi\PRAXIS       ; KKD,LST,DIA,BEF
MS3 = D:\Medi\FORM         ; Formular-Quellcodes
MS4 = D:\Medi\PARA         ; .P, Quellen der .P Daten
MS5 = D:\Medi\MED          ; PharmaStar Dateien
MS7 = D:\Medi\TEMP         ; temporäre Dateien
MS8 = D:\Medi\STAT         ; Statistikdateien
MS9 = D:\Medi\ARCHIV       ; Archivdateien




FL0 = A:

PP0 = LPT1:

LA0 = COM2:                    ;Lesegerät
LA1 = COM9:         ;Ldfü mit isdn karte            

;  Die Consolentypen und die dazugehörigen Parameter werden durch das
;  in eckigen Klammern stehende Wort CONSOLE eingeleitet.

[CONSOLE]

DESK-0 = TASK(0) LPT(PP0) WX() WY() FONT() TITLE(Server) START(pw)// die zeilen ändern
DESK-1 = TASK(1) LPT(PP0) WX() WY() FONT() TITLE(Server) START(pw)
DESK-2 = TASK(2) LPT(PP0) WX() WY() FONT() TITLE(Server) START(pw)
DESK-3 = TASK(3) LPT(PP0) WX() WY() FONT() TITLE(Server) START(pw)

SaFu 8. Okt 2007 21:35

Re: Schleifen problem
 
Zitat:

Zitat von fuknersascha
das steht in der ganzen datei aber nur die lezten im Memo1
Delphi-Quellcode:

[SYSTEM]
RPCI = TCP(16000)

[DEVICE]
MD6 = C:\Programme\XTalk

IF0 = D:\Medi\INST         ; Installationsdateien (INST*.P...)
IS0 = D:\Medi\SYS          ; Hilfsprogramme (RTSI, SVSI, ...)
IP0 = D:\Medi\PRG4          ; Medi-Programme

MS0 = D:\Medi\PDATEN       ; PALPHA,PSTAMM,PDATEN,PLINK,PDFORM,HBLISTE
MS1 = D:\Medi\HDATEN       ; BT,TK,RECALL,WBUCH,FIBU,LABDAT,FORM,PLRD,UVRD
MS2 = D:\Medi\PRAXIS       ; KKD,LST,DIA,BEF
MS3 = D:\Medi\FORM         ; Formular-Quellcodes
MS4 = D:\Medi\PARA         ; .P, Quellen der .P Daten
MS5 = D:\Medi\MED          ; PharmaStar Dateien
MS7 = D:\Medi\TEMP         ; temporäre Dateien
MS8 = D:\Medi\STAT         ; Statistikdateien
MS9 = D:\Medi\ARCHIV       ; Archivdateien




FL0 = A:

PP0 = LPT1:

LA0 = COM2:                    ;Lesegerät
LA1 = COM9:         ;Ldfü mit isdn karte            

;  Die Consolentypen und die dazugehörigen Parameter werden durch das
;  in eckigen Klammern stehende Wort CONSOLE eingeleitet.

[CONSOLE]

DESK-0 = TASK(0) LPT(PP0) WX() WY() FONT() TITLE(Server) START(pw)// die zeilen ändern
DESK-1 = TASK(1) LPT(PP0) WX() WY() FONT() TITLE(Server) START(pw)
DESK-2 = TASK(2) LPT(PP0) WX() WY() FONT() TITLE(Server) START(pw)
DESK-3 = TASK(3) LPT(PP0) WX() WY() FONT() TITLE(Server) START(pw)


mkinzler 8. Okt 2007 21:37

Re: Schleifen problem
 
Eigentlich sollte der Replace gehen.

SaFu 8. Okt 2007 21:38

Re: Schleifen problem
 
Der geht ja auch aber so wie ich es mach nur die erste zeile

mkinzler 8. Okt 2007 21:40

Re: Schleifen problem
 
Un
Zitat:

d
DESK-1 = TASK(1) LPT(PP0) WX() WY() FONT() TITLE(Server) START(pw)
nicht?

SaFu 8. Okt 2007 21:42

Re: Schleifen problem
 
nein es wird immer nur die erste überschrieben
damit
Delphi-Quellcode:
 procedure TForm1.sysconfsumschreiben;
var alt,neu : String;
    sl: TStringList;
     i: integer;
begin
   alt:=(ExtractFilePath(ParamStr(0)) + '\Dateisysconfs\SYSCONF.S');
   neu:= (ExtractFilePath(ParamStr(0)) + '\Dateisysconfs\neueSysconf\Sysconf.s');
   sl := TStringList.Create;
  try
  sl.LoadFromFile(alt);
     for i := 0 to Pred(sl.Count) do
      sl[i] := StringReplace(sl[i],Memo1.Lines[0],Memo2.Lines[0],[rfReplaceAll]);// hier
      sl.SaveToFile(neu);
  finally
    FreeAndNil(sl);
  end;
end;

mkinzler 8. Okt 2007 21:44

Re: Schleifen problem
 
Im Code ersetzt du ja nur die erste Variante

Delphi-Quellcode:
for i := 0 to Pred(sl.Count) do
begin
    sl[i] := StringReplace(sl[i],Memo1.Lines[0],Memo2.Lines[0],[rfReplaceAll]);
    sl[i] := StringReplace(sl[i],Memo1.Lines[1],Memo2.Lines[1],[rfReplaceAll]);
    sl[i] := StringReplace(sl[i],Memo1.Lines[2],Memo2.Lines[2],[rfReplaceAll]);
    sl[i] := StringReplace(sl[i],Memo1.Lines[3],Memo2.Lines[3],[rfReplaceAll]);
end;    
sl.SaveToFile(neu);

SaFu 8. Okt 2007 21:47

Re: Schleifen problem
 
Komisch so hatte ich das auch schonmal da ging das net

Vielleicht hatte ich es auch net richtig geschrieben aber jetzt geht es dank dir tausendmal

Gruss sascha wünsch euch noch einen schönen abend

mkinzler 8. Okt 2007 21:50

Re: Schleifen problem
 
Wahrscheinlich hast du begin..end vergessen.

SaFu 8. Okt 2007 21:52

Re: Schleifen problem
 
:( ich könnt mir echt in denn Ar... beissen aber ich bin ja Froh das es hier soviel Profies gibt :coder:

Cyberbob 8. Okt 2007 22:02

Re: Schleifen problem
 
Ist mir auch aufgefallen, aber das es so lange gedauert hat, bis es einer Postet?

mkinzler 9. Okt 2007 06:33

Re: Schleifen problem
 
In seinem Codebeispiel bestand der Schleifenrumpf auch aus nur einer Zeile. Ich würde aber raten beginn..end immer zu verwenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:53 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