AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi routine aendern(speichern in listbox>speichern in hashtable)
Thema durchsuchen
Ansicht
Themen-Optionen

routine aendern(speichern in listbox>speichern in hashtable)

Ein Thema von nimmersattXD · begonnen am 10. Jun 2009 · letzter Beitrag vom 16. Jun 2009
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
Benutzerbild von nimmersattXD
nimmersattXD

Registriert seit: 1. Jun 2009
Ort: Sangerhausen
65 Beiträge
 
Delphi 7 Personal
 
#11

Re: routine aendern(speichern in listbox>speichern in has

  Alt 10. Jun 2009, 17:38
ah ok, das wars

kann ich bei den hashtables eigentlich auch zwei spalten machen? also eigentlich drei mit key, path und dem namen der datei ?? und wenn ja wieder mach ich das ?
Sorry an alle fuer die es schwerfaellt meine texte zu lesen! ich bin im moment in england und hab nur eine englische tastatur, also leider keine umlaute usw.!

http://nimmersatt-xd.mybrute.com
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#12

Re: routine aendern(speichern in listbox>speichern in has

  Alt 10. Jun 2009, 17:55
du kannst ja an Data jedes Eintrages irgendwas anhängen ... also auch ein Record oder ein Object, mit den zusätzlichen Werten.

Aber wenn du wirklich nur den Dateinamen (ohne Pfad) als Key nimmst, dann mußt du wirklich noch aufpassen, daß/ob da kein Dateiname mehrfach vorkommt, da ja ein Key eindeutig sein muß.
$2B or not $2B
  Mit Zitat antworten Zitat
nat

Registriert seit: 10. Nov 2005
216 Beiträge
 
RAD-Studio 2009 Pro
 
#13

Re: routine aendern(speichern in listbox>speichern in has

  Alt 10. Jun 2009, 18:44
Zitat von himitsu:
Aber wenn du wirklich nur den Dateinamen (ohne Pfad) als Key nimmst, dann mußt du wirklich noch aufpassen, daß/ob da kein Dateiname mehrfach vorkommt, da ja ein Key eindeutig sein muß.
das hatte ich mir auch schon überlegt (schon bei einem anderen thread des autors).
wer sagt denn, dass logo.jpg in ordner-A gleich ist mit logo.jpg in ordner-B?
(in bezug auf die aufgabenstellung: doppelte dateien finden)
  Mit Zitat antworten Zitat
Benutzerbild von nimmersattXD
nimmersattXD

Registriert seit: 1. Jun 2009
Ort: Sangerhausen
65 Beiträge
 
Delphi 7 Personal
 
#14

Re: routine aendern(speichern in listbox>speichern in has

  Alt 10. Jun 2009, 20:18
mmh also is hashtables doch nicht sone gute idee oder wie? oder ich lass die pfade einfach weg, ich denk mal wenn das programm fertig ist, will mein chef eh noch eine routine, die die bilder löscht, die nicht gebraucht werden, dann ich die ja nochmal fix suchen ...
Sorry an alle fuer die es schwerfaellt meine texte zu lesen! ich bin im moment in england und hab nur eine englische tastatur, also leider keine umlaute usw.!

http://nimmersatt-xd.mybrute.com
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#15

Re: routine aendern(speichern in listbox>speichern in has

  Alt 10. Jun 2009, 20:30
du darfst die Bilder halt nicht am Namen unterscheiden, sondern solltest besser den Inhalt vergleichen.

zum nochmal schnell suchen:
wenn es mehrere Dateien mit dem selben Namen gibt, wie willst du dann entscheiden, welche gelöscht werden muß, wenn du den Pfad nicht mehr hast?

[add]
wenn es mehrere Einträge mit dem selben Namen/Key gibt, dann ist die hier derzeit verwendete Hashlist ungeeignet, da sie keine doppelten Keys erlaubt.
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von nimmersattXD
nimmersattXD

Registriert seit: 1. Jun 2009
Ort: Sangerhausen
65 Beiträge
 
Delphi 7 Personal
 
#16

Re: routine aendern(speichern in listbox>speichern in has

  Alt 11. Jun 2009, 10:16
mmh vllt habt ihr mein programm nicht verstanden, selbst wenn das bild mehrmals als datei vorkommt, kann es trotzdem sein das es nicht in den htmls is, also dann auch nich in der andern tabelle, wenn das der fall kann es ja geloescht werden, und dann ist es ja nich mehr so schwer nochmal GetFilesInDirectory aufzurufen und damit dann alle zu loeschen!

was passiert eigentlich in der hashtabelle wenn was gespeichert werden soll, was schon drin is? wird das dann einfach verworfen?

eigentlich brauch ich jetzt nur noch eine zaehlschleife machen, die jedes objekt der hashpic mit den objekten der andern hash tabele zu vergleichen! wie kommt man denn an die einzelnen objekte einer solchen tabelle? haben die einen index, den ich durchgehen kann? ok also mit .first komm ich ja an das erste un mit next an die naechsten elemente, aber wie komme ich dann nur an den inhalt vom key, zum speichern in einer stringvariable??
Sorry an alle fuer die es schwerfaellt meine texte zu lesen! ich bin im moment in england und hab nur eine englische tastatur, also leider keine umlaute usw.!

http://nimmersatt-xd.mybrute.com
  Mit Zitat antworten Zitat
Benutzerbild von nimmersattXD
nimmersattXD

Registriert seit: 1. Jun 2009
Ort: Sangerhausen
65 Beiträge
 
Delphi 7 Personal
 
#17

Re: routine aendern(speichern in listbox>speichern in has

  Alt 11. Jun 2009, 13:57
hat denn keiner eine idee?
Sorry an alle fuer die es schwerfaellt meine texte zu lesen! ich bin im moment in england und hab nur eine englische tastatur, also leider keine umlaute usw.!

http://nimmersatt-xd.mybrute.com
  Mit Zitat antworten Zitat
nat

Registriert seit: 10. Nov 2005
216 Beiträge
 
RAD-Studio 2009 Pro
 
#18

Re: routine aendern(speichern in listbox>speichern in has

  Alt 11. Jun 2009, 16:15
was genau ist denn jetzt noch dein problem? ich blicke nicht mehr ganz durch
formuliere mal ein paar konkrete probleme, dann versuche ich dir zu antworten 8)
  Mit Zitat antworten Zitat
Benutzerbild von nimmersattXD
nimmersattXD

Registriert seit: 1. Jun 2009
Ort: Sangerhausen
65 Beiträge
 
Delphi 7 Personal
 
#19

Re: routine aendern(speichern in listbox>speichern in has

  Alt 11. Jun 2009, 16:29
also hier erstmal mein quelltext, bei dem ich hilfe brauche:


Delphi-Quellcode:

procedure TForm1.BtnSearchSitClick(Sender: TObject);
var direct,filename:string;
    page:TStringList;
    i,idx:integer;
    re:TRegExpr;
    such:Boolean;
    hashsit,hashpic:TStringDictionary;
begin
direct:=Edpaths.Text;
hashsit:=TStringDictionary.Create;
hashpic:=TStringDictionary.Create;

GetFilesInDirectory1(direct,'*.html',hashsit,true,true);
GetFilesInDirectory1(direct,'*.htmlm',hashsit,true,false);
GetFilesInDirectory1(direct,'*.jsp',hashsit,true,false);

LiBoSit.Items.Add('das geht auch :D');


//routine zum suchen der Url in den htmls

page:=TStringList.Create;
re:=TRegExpr.Create;

   try
   for i:=0 to hashsit.TotalCount-1 do
     begin
     page.LoadFromFile(hashsit.first);
     re.ModifierI:=true;
     re.ModifierG:=true;
     re.ModifierM:=false;
     re.ModifierS:=false;
     re.ModifierX:=false;
     re.Expression:='<img .*?src=[\\]??"([^"]*?)[\\]??"';
     such:=re.Exec(page.Text);
     if such then
       repeat
       idx:=LastPos('/',re.match[1]);
         if idx > 0 then filename:=copy(re.Match[1],idx+1,length(re.Match[1]))
           else filename:=re.match[1];
           filename:=ReplaceHex(filename);

       if not (filename = '') then hashpic.Add(filename,nil);

       until not re.ExecNext;
       end;
   finally
     LiBoPicsFoundInPages.Sorted:=true;
     page.Free;
     re.Free;
   end;


end;
wundert euch nicht, manche variablen hab ich noch nicht geloescht, nach dem umstellen von listbox auf hashtabellen!

so ich hab jetzt die pfade von den htmls in hashsit gespeichert, das scheint auch zu funktionieren. jetzt hab ich halt das problem dass ich nicht weiss wie ich an die keys in der tabelle komme, zb in der zeile:
page.LoadFromFile(hashsit.first);
das inkompatible typen, is ja klar, aber wie mach ich denn dass die zaehlschleife durch jede datei geht und nach der regex sucht? also wie komm ich an den key ran!
Sorry an alle fuer die es schwerfaellt meine texte zu lesen! ich bin im moment in england und hab nur eine englische tastatur, also leider keine umlaute usw.!

http://nimmersatt-xd.mybrute.com
  Mit Zitat antworten Zitat
nat

Registriert seit: 10. Nov 2005
216 Beiträge
 
RAD-Studio 2009 Pro
 
#20

Re: routine aendern(speichern in listbox>speichern in has

  Alt 11. Jun 2009, 17:43
also die TStringDictionary-Klasse gehst du so durch:
Delphi-Quellcode:
var
  Key: String;
  dummy: Pointer;
begin
  Dict.First;
  while Dict.Next(Key, dummy) do
  begin
    //mach was mit Key
  end;
ich weiß nich mehr genau wie du dadrin speicherst, aber ich denke
Key ist dann dein dateiname. und den daten pointer brauchst du ja nicht.

aber deine html-dateien (bzw, jsp usw.) brauchst du doch nicht in ner
hash-table speichern. das macht doch auch gar keinen sinn, denn du
möchtest doch JEDE html-datei nach images parsen, oder?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


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 02:18 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