Jeg har vha en search function allerede fået sorteret det sådan, at jeg kun står tilbage med de linjer der indeholder 'FilePath='. Dette er puttet i en TStringlist og ser sådan ud:
Det nemmeste er nok at ændre de TStringList.items som ligger i TStringlisten.
Som det ses er Strengene ikke ens i TStringListen. FilePath=Icons\ingrave_wide.png FilePath=D:\Icons\ingrave_ultrawide.png Det er derfor vigtigt, at jeg kan vælge hvilke linjer der skal ændres i.
Nogle linjer skal tilføjes tekst, andre skal have slettet tekst og nogle skal have erstattet noget eksisterende tekst med andet. Det skal med andre ord være muligt, at angive HVOR i TStringen man ønsker at ændre indholdet.. Det lød måske lidt forvirrende. Svært at forklare i tekst...
Håber det er til at forstå... (lidt nemmere når man sidder med en ved skærmen) :)
Hvis ja, er det nemmeste nok: Når du markerer en linje i en listbox (TStringList) kopieres linjen til en editbox. Her kan du editere som du har lyst. Når der trykkes retur, kopieres indholdet tilbage til listbox'en.
Jeg er ikke sikker på jeg forstår hvad du mener, men det hele skal jo foregå i koden. Det lyder for mig som om du vil have, at jeg skal trykke på linjerne i listboxen i det kørende program...? Jeg kan godt følge dig i, at du vil kopiere Strings til en editbox, da det åbner op for flere muligheder for redigering (delete, insert m.m.) Har du evt. et kodeeksempel?
procedure TForm1.ListBox1Click(Sender: TObject); begin Edit1.text := Listbox1.items[Listbox1.ItemIndex]; end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin if key = #13 then begin Listbox1.items[Listbox1.ItemIndex] := Edit1.text; edit1.text := ''; Listbox1.setfocus; end; end;
Det ser ud til at du lægger op til, at det ikke sker i koden, men i det kørende program. (keypress er jo lig med brugerinteraktion i et kørende program). Så dit eksempel kan jeg desværre ikke acceptere - som svar. Men ellers tak!
For at finde ud af HVOR i linjen der skal editeres, skal TStringen (linjen) gennemsøges for et bestemt ord, fx '\eksmpl.exe'... Men jeg mener egentlig, det er rimelig præcist forklaret i det indledende spørgsmål i denne tråd. :) Derefter <tilføj tekst> OG/ELLER <slet tekst> OG/ELLER <ændre tekst>
Rettelse: (kom til at bytte om på de to sidste linjer i sidste indlæg)
(...) For at finde ud af HVOR i linjen der skal editeres, skal TStringen (linjen) gennemsøges for et bestemt ord, fx '\eksmpl.exe'... Derefter <tilføj tekst> OG/ELLER <slet tekst> OG/ELLER <ændre tekst>
Men jeg mener egentlig, det er rimelig præcist forklaret i det indledende spørgsmål i denne tråd. :)
Her er noget automatisk: (indeholder en ListBox og en Button)
procedure TForm1.FormCreate(Sender: TObject); begin Listbox1.clear; listbox1.items.add('c:\1234\sfgg\avc.exe'); listbox1.items.add('d:\abc\adsfsfgg\abc.exe.def'); listbox1.items.add('e:\qwerty\sffsfgg\aec.exe'); end;
procedure TForm1.Button1Click(Sender: TObject); var i,j: integer; st: string; begin For i := 0 to Listbox1.items.count-1 do begin j := pos('abc.exe',Listbox1.items[i]); {søger efter abc.exe} if j <> 0 then Begin st := listbox1.items[i]; delete(st,j+4,3); {sletter exe} insert('png',st,j+4); {indsætter png} listbox1.items[i] := st; end; end; end;
Mange tak for hjælpen hreiff... Dog måtte jeg ændre sidste linje til: listbox1.Items.Add(st); Men det er så ok :) Nu har du jo fortjent dine points, men hvis du har lyst, kunne jeg godt tænke mig at den sletter noget, der står FØR noget også.
delete(st,j+4,3); {sletter abc. og lade exe stå tilbage} - hvis du forstår...
Sikkert meget simpelt, men nu er du jo i træning ;) Så mon ikke også jeg kommer det igen! Det er næsten 4 år siden jeg sidst legede med Delphi, så der er mange ting der skal genopfriskes. Endnu engang: Tak for din hjælp!
Ok, næste gang får du ikke så mange :) Jeg har dog rigelig med point af dele ud af, så det betyder mindre for mig! Desuden: Jo flere point man udlodder, jo mere hjælpsomme bliver folk... :)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.