Autor |
Beitrag |
Opfer15
      
Beiträge: 19
Windows Xp, Vista, 2k, Suse Linux 9
C#, Delphi
|
Verfasst: Mo 28.08.06 20:05
so ich hab jetzt mal nen txt zu sql converter für mich gebaut und nun convertiert er halt 35 mb große Textdateien und da ich alles mit if sätzen gelöst habe ist das ziemlich langsam geworden kann ich da irgendwie abhilfe schaffen weil 1-2h möchte ich net für ne einfach convertierung warten (bei amd 64 3700+ wohlgemerkt  );
so hier nen bsp.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| if pos('[creature', sl_scp[I]) > 0 then begin end; if pos('model', sl_scp[I]) > 0 then begin modelid := sl_scp[I]; Delete(modelid, 1, 6); end; if pos('name', sl_scp[I]) > 0 then begin name := sl_scp[I]; Delete(name, 1, 5); end; if pos('guild', sl_scp[I]) > 0 then begin subname := sl_scp[I]; Delete(modelid, 1, 6); end; |
oder aber auch
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| if pos('SPAWN', sl_cr[I]) > 0 then if pos('SPAWN_GOBJ', sl_cr[I]) > 0 then else if pos('SPAWNDIST', sl_cr[I]) > 0 then else if pos('SPAWNTIME', sl_cr[I]) > 0 then begin sl_delimit.Delimiter := ' '; sl_delimit.DelimitedText := sl_cr[I]; spawntimemin := sl_delimit[0]; Delete(spawntimemin, 1, 10); spawntimemax := sl_delimit[1]; end else begin sl_delimit.Delimiter := ' '; sl_delimit.DelimitedText := sl_cr[I]; ID := sl_delimit[0]; Delete(ID, 1, 6); crI := sl_scp.IndexOf('[Creature ' + ID + ']'); if crI < 0 then else for crI := crI to crI+40 do begin if foundmana > 0 then if foundhealth > 0 then break else if pos('maxhealth= ', sl_scp[crI]) < 0 then if foundhealth > 0 then else begin health := sl_scp[crI]; Delete(health, 1, 10); foundhealth := 1 end; if pos('maxmana= ', sl_scp[crI]) < 0 then if foundmana > 0 then else begin mana := sl_scp[crI]; Delete(mana, 1, 8); foundmana := 1; end; |
Wundert euch nicht über verwirrende Kommentare ^^ und für suchlustige irgendwo hab ich in diesem Code ein break versteckt was aufgrund mangelnder Programmierkenntnisse nicht funktioneiert
So genug der grausigen rechtschreibung und TIA hoffe was zu hören auch wenn ich nur was verlange ^^ Moderiert von Christian S.: Topic aus VCL (Visual Component Library) verschoben am Mo 28.08.2006 um 20:06
|
|
BenBE
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: Mo 28.08.06 20:14
Wie speicherst Du die Daten in die Datenbank? Zeig mal ein wenig mehr Quelltext der Konvertierungsroutine, ich denk, der Fehler liegt an einer anderen Stelle ...
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
Opfer15 
      
Beiträge: 19
Windows Xp, Vista, 2k, Suse Linux 9
C#, Delphi
|
Verfasst: Mo 28.08.06 20:22
erstmal danke für die schnell antwort..
ich speichere sie nicht direkt in der Datenbank sondern mache daraus ein *.sql file in dem ich die variablen die ich mit den werten aus dem text gespeichert hab ihn mysql format bring sodass einfach jedem dem ich die datei gebe seine Datenbank damit patchen kann
sieht so aus (war ganz schöne denkarbeit das zu schreiben  )
Delphi-Quelltext 1: 2: 3: 4: 5: 6:
| s1 := ''''; s2 := ', '; sl_final.Add('(' + IntToStr(entry) + s2 + ID + s2 + '''0''' + s2 + s1 + posx + s1 + s2 + s1 + posy + s1 + s2 + s1 + posz + s1 + s2 + s1 + orientation + s1 + s2 + spawntimemin + s2 + spawntimemax + s2 + '''0''' + s2 + waypoint + s2 + s1 + posx + s1 + s2 + s1 + posy + s1 + s2 + s1 + posz + s1 + s2 + s1 + orientation + s1 + health + s2 + mana + s2 + '0' + s2 + '0' + s2 + npcflags + s2 + faction + s2 + s1 + s1 + '),'); |
falls es irgendwie auch die geschwindigkeit beinträchtigt ich hab verdammt viele variablen z.b.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16:
| sl_delimit,sl_output:TstringList;
modelid,maxhealth,maxmana,level,faction,npcflag,speed,mindmg,maxdmg,mount, level_max,size,bounding_radius,clase,combat_reach,typus,flag1,
equipmodel1,equipmodel2,equipmodel3,equipinfo1,equipinfo2,equipinfo3,equipslot1, equipslot2,equipslot3,lootid,skinloot,resistance1,resistance2,resistance3, resistance4,resistance5,resistance6, spell1,spell2,spell3,spell4,mingold, maxgold,name,subname,AIName,MoveName,char,ScriptName:string;
entry,armor,rank,attackpower,baseattacktime,rangeattacktime,flags,dynamicflags, family,trainer_typus,minrangedmg,maxrangedmg,rangedattackpower,civilian:string; |
//Edit
Hello anybody there ?????? HUHU
|
|
|