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 4 von 5   « Erste     234 5      
nat

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

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

  Alt 12. Jun 2009, 16:21
das problem ist, dass du dem programm ja keine zeit gibts die farbänderung
auch an zu zeigen, da du ja noch in deiner routine steckt (und dein
programm damit in dem mom beschäftigt ist). du kannst dem programm
zeit geben diese dinge zu bearbeiten indem du einmal
Application.ProcessMessages; aufrufst nachdem du was geändert hast
(z.B. deine panel-farbe). alternativ könntest du deine ganze routine
in einene thread verpacken. dann würde dein programm auch nicht mehr
einfrieren. aber das is doch etwas komplexer (zumindest wenn man
es noch nie gemacht hat)
  Mit Zitat antworten Zitat
Benutzerbild von nimmersattXD
nimmersattXD

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

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

  Alt 12. Jun 2009, 16:33
hey jetzt wirds langsam, echt cool was ihr alles wisst machst du das beruflich nat oder studierst du das?? muss ja irgendwo herkommen man sieht ja bei mir das normales schuldelphi nicht unbedingt tiefgreifend ist

das mit dem threading hab ich schon irgendwo gelesen, aber ich glaub das programm is im mom schon so schnell, das es nicht stoert dass es einfriert ... mein chef war zumendest sehr zufrieden jetzt fehlt nur noch das mit dem excel, aber das is ja im andern thema
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
 
#33

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

  Alt 12. Jun 2009, 17:36
habe zwar informatik studiert, aber delphi habe ich mir über die jahre selber beigebracht.
is ja ne super hilfe dabei, die einen schon ganz schön weit bringt. und wnen man doch mal nicht
weiter kommt gibts ja genug seiten/communities wo man nachschauen/fragen kann.
man muß halt nur etwas ehrgeiz haben.

was willst du da denn genau machen?
einfach nur 2-spalten in excel anzeigen?
excel kann doch auch csv-dateien lesen.
erstell doch einfach ne csv und öffne die mit delphi.
  Mit Zitat antworten Zitat
Benutzerbild von nimmersattXD
nimmersattXD

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

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

  Alt 12. Jun 2009, 17:43
naja im grunde genommen hab ich das ja mit savetofile schon ganz gut drin, nur erstens sollen beide listboxes drin gespeichtert werden und zweitens sollen die in einer tabelle mit zwei spalten gegenueberstehen, ungefaehr so:

unused pictures ________ used pictures

___bild345.jpg __________ bild898.jpg
__........ __________________ ........

(unterstriche nicht beachten )


wie ich in dem andern thread schon geschrieben hab hab ich auch schon mit variants angefangen, siehste ja auch in meinem prog. aber mir fehlen irgendwie trotzdem die funktion wie zb. excel.sheets.add ...
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
 
#35

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

  Alt 12. Jun 2009, 17:46
da hab ich noch nie was mit gemacht. also von daher kenne ich mich damit nich wirklich aus.
aber mit csv-datein könntest du doch genau das machen. halt nur ohne design. aber wenn das nicht
wichtig is...
  Mit Zitat antworten Zitat
Benutzerbild von nimmersattXD
nimmersattXD

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

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

  Alt 12. Jun 2009, 17:49
ach design is nich wichtig, is nur dazu da das ein bissel abzugleichen, ob mein prog auch alles bekommt un so!

aber was genau meinst du mit csv-dateien?
gibts da ne funktion aehnlich wie savetofile??
oder muss ich da was anderes schreiben?
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
 
#37

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

  Alt 12. Jun 2009, 18:29
CSV
die csv-datei mußt du halt von hand schreiben (ist aber ja nur ne text-datei).
also einfach einen string zusammenbasteln und in eine datei schreiben.
  Mit Zitat antworten Zitat
Benutzerbild von nimmersattXD
nimmersattXD

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

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

  Alt 15. Jun 2009, 14:19
hallo nochmal,

mein prog ist fast fertig, in excel speichern kann ich jetzt auch

nun wollte ich gern noch etwas bezueglich der hashtables wissen:

wie kann man denn data(bzw.: nil) benutzten, also in meinem fall noch einen string speichern?
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
 
#39

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

  Alt 15. Jun 2009, 16:10
so jetzt hab ich mich noch ein bisschen ueber pointer informiert und mein programm geaendert, anscheinend speichert es auch schon meinen string im data der hashtabelle(hashpicofsit), aber bei der ausgabe will es einfach nicht funktionieren

hier mein quelltext dazu:

Delphi-Quellcode:
procedure TForm1.BtnSearchSitClick(Sender: TObject); //zum finden der Seiten in den ordnern und der urls der bilder
var direct,filename,key:string; //in den html
    dummy:Pointer;
    page:TStringList;
    idx:integer;
    re:TRegExpr;
    such:Boolean;
begin
direct:=Edpaths.Text;
hashsit:=TStringDictionary.Create;
hashpicofsit:=TStringDictionary.Create;

if not (EdpathS.Text='') then
 begin
 GetFilesInDirectory1(direct,'*.html',hashsit,true,true);
 GetFilesInDirectory1(direct,'*.htmlm',hashsit,true,false);
 GetFilesInDirectory1(direct,'*.jsp',hashsit,true,false);
 end
else ShowMessage('Please, insert the directory paths first!');

LbSit.Caption:=inttostr(hashsit.TotalCount);
Panel2.Color:=clGreen;
Application.ProcessMessages;
//routine zum suchen der Url in den htmls

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

   try
   while hashsit.Next(key,dummy) do
     begin
     page.LoadFromFile(key);
     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 hashpicofsit.Add(filename,@key) //hier kommt keine fehlermeldung, scheint also zu funktionieren
       until not re.ExecNext;
       end;
   finally
     page.Free;
     re.Free;
   end;

   LbPicsFoundInPages.Caption:=inttostr(hashpicofsit.TotalCount);

   Panel3.Color:=clGreen;
   Application.ProcessMessages;

end;

procedure TForm1.BtnSearchFinClick(Sender: TObject); //vergleicht gefundene bilder(aus ordner) und gefundene bilder(in htmls)
var key:string;
    dummy1:pointer;
    dummy2:^string;
    length,voll,i:double;
    parts,percent:integer;
begin

if not ((EdpathS.Text='')or(EdpathS.Text='')) then
begin
 BtnSearchPic.Click;
 Panel1.Color:=clGreen;
 Application.ProcessMessages;
 BtnSearchSit.Click;
 Application.ProcessMessages;

 length:=Panel5.Width;
 voll:=hashpic.TotalCount*0.05;
 Panel5.Width:=0;
 i:=0;
 percent:=0;
 Panel5.Visible:=true;
 parts:=round((length*5)/100);

 hashpic.First;

 if (hashpic.TotalCount>0) and (hashpicofsit.TotalCount>0) then
  begin
  Screen.Cursor:=crHourGlass ;
    try
     while hashpic.Next(key,dummy1) do
      begin
      hashpicofsit.First;
      BtnSearchFin.Caption:='SEARCHING ...' ;
      i:=i+1;
      if i>=voll then
        begin
        i:=0;
        Panel5.Width:=Panel5.Width+parts;
        percent:=percent+5;
        Label6.Caption:=(inttostr(percent)+'%');
        Application.ProcessMessages;
        end;
      if hashpicofsit.Find(key,dummy2) then //hier kommt die fehlermeldung
        begin
        LiBoUsed.ItemIndex:=LiBoUsed.Items.Add(key);
        LiBoUnused.ItemIndex:=LiBoUnused.Items.Add(dummy2^); //AUSGABE der data
        end
      end;
     finally
       begin
       Panel5.Width:=445;
       Label6.Caption:='100 %';
       Label5.Visible:=true;
       BtnSearchFin.Caption:='Search for unused pictures';
       screen.cursor:=crdefault;
       end;
     end;
  end
 else ShowMessage('In the folders or in the pages are no pictures been found');

end
else ShowMessage('Please, insert the directory paths first!');

end;

fehlermeldung: [error] ...: Types of actual and formal var parameters must be identical
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
 
#40

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

  Alt 16. Jun 2009, 13:13
hallo

hab deinen source nur kurz überflogen, aber versuch mal deine variable zu nem pointer zu casten, also
so in etwaif hashpicofsit.Find(key, Pointer(dummy2)) edit:
hab nun mal etwas genauer geguckt...
if not (filename = '') then hashpicofsit.Add(filename,@key) ich glaube nicht, dass das so funktionieren wird. du fügst einen pointer
auf eine lokale variable ein, die beim verlassen der funktion nicht mehr
verfügbar ist (somit auch, wenn du sie später verwenden willst).
du solltest selber speicher reservieren für deinen string und dann einen
pointer darauf einfügen. dieser string ist so lange verfügbar, bist du
ihn selber freigibst.

du könntest es in der art machen (so ausm kopf)
Delphi-Quellcode:
var
  P: PChar;
begin
...
  P := StrNew(PChar(key));
  Dict.Add(filename, P);
...
end;

//später dann
  ...
  Dict.Find(filename, P);
  showmessage(StrPas(P)); //oder mache irgendetwas anderes mit dem string
  ...

//wenn du ihn nicht mehr brauchst:
  StrDispose(P);
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


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:55 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