Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Texte von Listbox1 in ListBox1 teilweise kopieren (https://www.delphipraxis.net/101377-texte-von-listbox1-listbox1-teilweise-kopieren.html)

taktaky 12. Okt 2007 00:38


Texte von Listbox1 in ListBox1 teilweise kopieren
 
Hallo,

in ListBox1 werden alle Datei im Ordner und auch im Unterordner aufgelistet so z.B.
Code:
Ordner1\index.php
logo.gif
...
Nun möchte ich die Dateinamen von ListBox1 in ListBox2 kopieren (aber ohne den Ordner-Namen sondern nur Filename)
also in ListBox2 so nun sein :
Code:
index.php
logo.gif
Hat jemand eine Idee?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
begin
for i:= 0 to ListBox1.Items.Count -1 do
ListBox2.Lines.Add(' :( ');

end;

<>

Sergej 12. Okt 2007 00:46

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Delphi-Quellcode:
function ExtractFileName(const S: FullFileName): string;

taktaky 12. Okt 2007 10:00

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Zitat:

Zitat von Sergej
Delphi-Quellcode:
function ExtractFileName(const S: FullFileName): string;

Ich habe schon den Code, der die Dateien in Ordner und auch in unter Ordner sucht, findet und dann in ListBox1 auflistet.

Ich muss nuss nun nur die Dateinamen von ListBox1 holen und in ListBox2 kopieren


<>

DeddyH 12. Okt 2007 10:01

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Dann benutz die gepostete Funktion dazu.

quendolineDD 12. Okt 2007 10:07

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Oder schaue Zeile für Zeile in deiner ListBoch nach den \ oder /.

copy, pos und delete dürftest du ja kennen? :)

taktaky 12. Okt 2007 10:12

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Zitat:

Zitat von quendolineDD
Oder schaue Zeile für Zeile in deiner ListBoch nach den \ oder /.

copy, pos und delete dürftest du ja kennen? :)

Das kann auch die Lösung sein, indem man einen Code einbaut, der alles was von null Position bis das symbol "/" oder "\" löscht :gruebel:


<>

quendolineDD 12. Okt 2007 10:15

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Indem du das anstregnen würdest, was dein Smily da kratzt, wärst du vlt auf die Lösunfg gekommen, die ich dir mit den Funktionen aufzeigen wollte.

Zum einen kannst du überhaupt mal schauen, ob solche Zeichen enthalten sind, und du gleich direkt kopieren kannst von LB1 zu LB2.
Zum anderen könntest du den String jeweils immer kürzen , bis solche Zeichen nicht mehr enthalten sind und s.o.

Gruß

Klaus01 12. Okt 2007 10:21

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Zitat:

Zitat von taktaky
Zitat:

Zitat von Sergej
Delphi-Quellcode:
function ExtractFileName(const S: FullFileName): string;

Ich habe schon den Code, der die Dateien in Ordner und auch in unter Ordner sucht, findet und dann in ListBox1 auflistet.

Ich muss nuss nun nur die Dateinamen von ListBox1 holen und in ListBox2 kopieren
<>

Und Du bist Dir sicher was diese Funktion macht?


Die macht genau das, was quendolineDD mit copy/delete nachbauen wollte.

Ab und an mal in die Delphi Hilfe schauen, wenn man nicht weiß was eine Funktion so macht.

Grüße
Klaus

taktaky 12. Okt 2007 21:41

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Hi,

das hat nichts gebracht mit dem extractfilename

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
begin
for i:=1 to listbox1.items.count do
listbox1.items[i-1]:=extractfilename(listbox1.items[i-1]);

end;
Es passiert nichts !



<>

mkinzler 12. Okt 2007 21:46

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Sind Laufwerksbuchstaben enthalten?

taktaky 12. Okt 2007 21:49

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Zitat:

Zitat von mkinzler
Sind Laufwerksbuchstaben enthalten?

Nein. Darum funktioniert das ganze nicht :gruebel:

Progman 12. Okt 2007 22:31

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Delphi-Quellcode:
  while Pos('\', Listbox1.Items[i-1] > 0 do delete(ListBox1.Items[i-1],1,1);
  ListBox2.Items.add(ListBox1.Items[i-1];

taktaky 13. Okt 2007 00:04

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Error: Incompatible Types : String and Integer !
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var i : Integer;
begin
while Pos('\', Listbox1.Items[i-1]) > 0 do delete(ListBox1.Items[i-1],1,1);
  ListBox2.Items.add(ListBox1.Items[i-1];
end;
Es es mit dem Code leider nicht geklappt!



<>

Billi Berserker 13. Okt 2007 01:44

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Zitat:

Zitat von taktaky
Hi,

das hat nichts gebracht mit dem extractfilename

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
begin
for i:=1 to listbox1.items.count do
listbox1.items[i-1]:=extractfilename(listbox1.items[i-1]);

end;
Es passiert nichts !



<>

Kleiner Hinweise...
Arrays und Listen sollten immer mit dem 0ten Element beginnen! Von daher gilt das gleiche für solche for-Schleifen... bei 0 anfangen und bis count - 1 gehen.

extractfilename() wird wohl nicht funktionieren da kein Laufwerk drin ist.
Einfache lösung wäre einen Laufwerksbezeichner rein zu basteln...

Namenloser 13. Okt 2007 02:07

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Das funktioniert auch ohne Laufwerksbezeichner tadellos. Eben schnell unter Delphi 3 getestet:
Delphi-Quellcode:
showmessage(extractfilename('ordner\eigene dateien\datei.txt'));
Gibt "datei.txt" aus.

Progman 13. Okt 2007 06:52

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
das muss ja auch klappen. Hier der Originalcode aus SysUtils:
Delphi-Quellcode:
function ExtractFileName(const FileName: string): string;
var
  I: Integer;
begin
  I := LastDelimiter(PathDelim + DriveDelim, FileName);
  Result := Copy(FileName, I + 1, MaxInt);
end;
Da wird auch nichts anderes gemacht als nach dem letzten '\' zu suchen und alles dahinter als Ergebnis auszugeben.
Ich vermute mal, dass die Fehler bei taktaky ne ganz andere Ursache haben ;)

DeddyH 13. Okt 2007 08:51

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Zitat:

Zitat von Progman
Ich vermute mal, dass die Fehler bei taktaky ne ganz andere Ursache haben :wink:

Jepp, PEBKAC :mrgreen:

Phoenix 13. Okt 2007 09:09

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
a.) @All: So unterschwellige Sachen gehören nicht zum guten Ton.

b.) @Taktaky:
Erinnere Dich an die PN.

Du versuchst er gar nicht zu verstehen, was die Leute Dir sagen wollen.
Deswegen hier nochmal ganz eindringlich:
Lese in der Delphi-Hilfe nach, was Delphi-Referenz durchsuchenExtractFileName macht.

Dann schaue Dir den schon geposteten Code zu dieser Funktion nochmal genau an und verstehe, warum dieser Code nicht genau das macht, was Du willst. Achtung Hinweis: Achte dabei insbesondere auf die Bezeichner der beiden Listboxen, und die Indizes zum Zugriff. Zumindest das letztere wurde schon angesprochen.

Dann lies Dir nochmal die PN durch und versuche, den Sinn der Worte zu erfassen und mache Dir dann selber ganz eindringlich klar, was die Konsequenzen sind wenn Du diese weiterhin nicht beachtest.


c.) Ich bin geneigt, diesen Thread zu schliessen, denn bei dieser Fragestellung und diesen Antworten wäre selbst meine Freundin in der Lage, das Problem zu lösen. Und die hat mit Computern und erst recht mit Programmierung gar nichts am Hut.

Sollte das noch weiter offtopic werden wird hier auch geclosed.

DeddyH 13. Okt 2007 09:13

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Zitat:

Zitat von Phoenix
Sollte das noch weiter offtopic werden wird hier auch geclosed.

Ich persönlich wäre dafür, da IMHO bereits alles gesagt wurde, was der Problemlösung dienlich sein könnte.

taktaky 13. Okt 2007 10:39

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Zitat:

Zitat von NamenLozer
Das funktioniert auch ohne Laufwerksbezeichner tadellos. Eben schnell unter Delphi 3 getestet:
Delphi-Quellcode:
showmessage(extractfilename('ordner\eigene dateien\datei.txt'));
Gibt "datei.txt" aus.

Nicht mit einer einzelne Datei testen, sondern die Liste in ListBox1!

Hier ist eine Lösung: Und schon getestet :wink:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
begin
for i:=1 to listbox1.items.count do
  listbox1.items[i-1]:=extractfilename(stringreplace(listbox1.items[i-1], '/','\', [rfreplaceall]));
end;
<>

Klaus01 13. Okt 2007 11:46

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Zitat:

Zitat von taktaky

Nicht mit einer einzelne Datei testen, sondern die Liste in ListBox1!

Hier ist eine Lösung: Und schon getestet :wink:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
begin
for i:=1 to listbox1.items.count do
  listbox1.items[i-1]:=extractfilename(stringreplace(listbox1.items[i-1], '/','\', [rfreplaceall]));
end;
<>

Ach taktaky,

hier im Forum hatte zu keiner Zeit jemand Deine komplette Liste um so etwas zu testen.
Selbst in Deinem kurzen Beispiel im 1. Beitrag wurden die Ordner mit "\" getrennt.
Wenn Du in Deiner Liste dann die Ordner von den Dateien mit einem "/" trennst - wie soll
mann Dir da helfen?

In der Hilfe für ExtractFilePath steht eindeutig das es nach Backslash "\" schaut.

Grüße
Klaus

Nuclear-Ping 13. Okt 2007 14:23

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Deddy, PEBKAC, ganz klar. :thumb: ... Kann man nix machen.

Blackheart 13. Okt 2007 21:07

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Zitat:

Zitat von Klaus01
Zitat:

Zitat von taktaky

Nicht mit einer einzelne Datei testen, sondern die Liste in ListBox1!

Hier ist eine Lösung: Und schon getestet :wink:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer;
begin
for i:=1 to listbox1.items.count do
  listbox1.items[i-1]:=extractfilename(stringreplace(listbox1.items[i-1], '/','\', [rfreplaceall]));
end;
<>

Ach taktaky,

hier im Forum hatte zu keiner Zeit jemand Deine komplette Liste um so etwas zu testen.
Selbst in Deinem kurzen Beispiel im 1. Beitrag wurden die Ordner mit "\" getrennt.
Wenn Du in Deiner Liste dann die Ordner von den Dateien mit einem "/" trennst - wie soll
mann Dir da helfen?

In der Hilfe für ExtractFilePath steht eindeutig das es nach Backslash "\" schaut.

Grüße
Klaus

Neuerdings verbringe Ich hier mehr Zeit als sonst, auch bemühe Ich die Suche nach Autoren des öfteren... (Taktaky) ist immer für einen Lacher gut - vieleicht ist es ja auch von ihm so gedacht. :wink:
Soetwas muss es einfach auch geben.

DeddyH 13. Okt 2007 22:16

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Nichts liegt mir ferner als andere hier in die Pfanne hauen zu wollen, aber das ist schon ein Extremfall. Besonders seine "Hartnäckigkeit" (ich meine eigentlich Frechheit), sämtliche Beiträge, die sich irgendwie mit Ressourcen oder Videos befassen, abzugrasen und dort auf sein "Problem" aufmerksam zu machen, bleiben einem doch recht dauerhaft im Gedächtnis. Ich will ja nichts gegen Anfänger- oder "Wald und Bäume"-Probleme sagen, die haben wir schließlich alle mal, aber so ein Verhalten ist in meinen Augen nicht mehr zu toppen (im negativen Sinne).

OK, back to topic now.

oki 13. Okt 2007 22:40

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Das ist ja lustig. Blos nicht den Thread schließen !!!!!!!!
Ich habe selten jemanden erlebt, der standhaft alles geschriebene ignoriert. Das muß man erst mal schaffen!!!

Ich werd mit Freude den Thread weiter beobachten.

gruß oki

mkinzler 13. Okt 2007 22:42

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Zitat:

Zitat von oki
Das ist ja lustig. Blos nicht den Thread schließen !!!!!!!!
Ich habe selten jemanden erlebt, der standhaft alles geschriebene ignoriert. Das muß man erst mal schaffen!!!

Ich werd mit Freude den Thread weiter beobachten.

gruß oki

Handelt es sich hier um ein Delphi-/programmierforum oder ein Portal zur Belustigung?

DeddyH 13. Okt 2007 22:45

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Siehe #18 -#19

oki 13. Okt 2007 22:47

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Zitat:

Zitat von mkinzler
Handelt es sich hier um ein Delphi-/programmierforum oder ein Portal zur Belustigung?

Sorry, ich bemühe mich immer um sachliche Beiträge, aber das ist doch wirklich selten. Und mal etwas Spaß zwischendurch sollte doch erlaubt sein.

Freundliche Grüße

oki

mkinzler 13. Okt 2007 22:54

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Natürlich, aber wenn ein Thread (oder andere Threads dieses Autors) so verläuft ist es auch nicht so gut

DeddyH 13. Okt 2007 22:59

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
@mkinzler: sry, ich muss mich doch noch einmal einschalten. Leider verlaufen die Threads des TE oft so (auch in anderen Foren). Repräsentativ mal ein Link(der war mir gerade eingefallen, weil die Lösung eigentlich in meinem ersten Posting stand, aber dann ...)

Progman 13. Okt 2007 23:07

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
LOL ;) :roll:

Luckie 13. Okt 2007 23:13

Re: Texte von Listbox1 in ListBox1 teilweise kopieren
 
Also das reicht jetzt! :warn:


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