DarkAndrew Napisano Czerwiec 8, 2006 Zgłoś Share Napisano Czerwiec 8, 2006 Zastanawia mnie jedna sprawa czy da się użyć w programie stringa tak aby służył jak np if czyli [code=Delphi] polecenie:='if' polecenie x>y then nieważne co dalej; [/code] "Może wam pomoge, może nie, może pierdolcie w dupę się"-prof. Jarząbek Link do komentarza Udostępnij na innych stronach More sharing options...
Iskar Napisano Czerwiec 8, 2006 Zgłoś Share Napisano Czerwiec 8, 2006 Nie można z tego co wiem. Możesz zawsze zrobić if polecenie = 'if' then if cos tam then cos tam2 ;-) Link do komentarza Udostępnij na innych stronach More sharing options...
KKKas Napisano Czerwiec 8, 2006 Zgłoś Share Napisano Czerwiec 8, 2006 [quote] Zastanawia mnie jedna sprawa czy da się użyć w programie stringa tak aby służył jak np if czyli [code=Delphi] polecenie:='if' [/code]polecenie x>y then nieważne co dalej; [/quote]A do czego potrzebna Tobie taka konstrukcja ? Na pewno można to zrobić inaczej (jak np napisał Iskar). Delphi nie jest skryptowy, nie będzie w nim czegoś na wzór eval() znanego z php, perla itd. ҉ Link do komentarza Udostępnij na innych stronach More sharing options...
Firen Napisano Czerwiec 8, 2006 Zgłoś Share Napisano Czerwiec 8, 2006 To jest normalny jezyk (czyt. imperatywny, obiektowy) a nie jakis deklaratywny Prolog ;p Down With The Sickness Link do komentarza Udostępnij na innych stronach More sharing options...
DarkAndrew Napisano Czerwiec 8, 2006 Autor Zgłoś Share Napisano Czerwiec 8, 2006 Tak się tylko zastanawiałem..... Nudzi mi się wymyślam takie gupoty;) "Może wam pomoge, może nie, może pierdolcie w dupę się"-prof. Jarząbek Link do komentarza Udostępnij na innych stronach More sharing options...
ktoś Napisano Czerwiec 9, 2006 Zgłoś Share Napisano Czerwiec 9, 2006 Hihi... może i głupoty, ale czasem by sięprzydałą taka możliwość [b]Narazie trzeba dobrze się zastanawiać nad możliwymi opcjami, a mając możliwosć np. wpisania polecenia do edita, albo memo etc. możnaby zrobić coś bardziej uniwersalnego... Tylko że do tego trzebaby mieć kompilator w programie (żeby samemu nie przepisywać - bo to jest powrót do punktu wyjścia) Link do komentarza Udostępnij na innych stronach More sharing options...
DarkAndrew Napisano Czerwiec 10, 2006 Autor Zgłoś Share Napisano Czerwiec 10, 2006 Nad tym też myslałem to by się przyjeło w api client-serwer że np serwer wysyła kodzik do clienta a ten go wykonuje, gdyby się ktoś uparł to to by się genialnie do trojanów nadawało ale ja taki "złośliwy" to nie jestem. Wracając można by poszerzać klienta o nowe opcja taki auto-update. "Może wam pomoge, może nie, może pierdolcie w dupę się"-prof. Jarząbek Link do komentarza Udostępnij na innych stronach More sharing options...
Firen Napisano Czerwiec 10, 2006 Zgłoś Share Napisano Czerwiec 10, 2006 Marudzisz Biblioteki dynamiczne juz Ci nie wystarczaja ? Down With The Sickness Link do komentarza Udostępnij na innych stronach More sharing options...
ktoś Napisano Czerwiec 11, 2006 Zgłoś Share Napisano Czerwiec 11, 2006 Ja k już jesteśmy przy bibliotekach dynamicznych:w powerGG jest coś takiego, że można dodawać dowolne wtyczki (biblioteki o dowolnych nazwach) do katalogu Plugs, i wystarczy zmodyfikować tekstowy plik konfiguracyjny, aby zacząć ich używać.Jak to jest zrobione, że program główny PGG może używać funkcji, które nie były podane przed kompilacją? (w pliku konfiguracyjnym znajdują się TYLKO nazwy bibliotek, które mają być dostępne dla użytkownika) Link do komentarza Udostępnij na innych stronach More sharing options...
Firen Napisano Czerwiec 11, 2006 Zgłoś Share Napisano Czerwiec 11, 2006 Tak samo mozliwe jak w konnekcie, mirandzie, winampie, etc choc niekoniecznie tak samo rozwiazane. Poszukaj sobie na stronie winampa sdkow do pisania pluginow dla niego. Powinienes dzieki temu zalapac jak sie takie rzeczy rozwiazuje. Down With The Sickness Link do komentarza Udostępnij na innych stronach More sharing options...
KKKas Napisano Czerwiec 11, 2006 Zgłoś Share Napisano Czerwiec 11, 2006 Jest funkcja LoadLibary (podajesz jej nazwę pliku), który otwiera bibliotekę (dll), a następnie można odczytać dowolną funkcję (jeśli zna się jej nazwę/numer). Program może wyszukać wszystkie pliki w katalogu (o rozszerzeniu .dll) i załadować je z osobna.Tak, to wygląda w skrócie. ҉ Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Czerwiec 12, 2006 Zgłoś Share Napisano Czerwiec 12, 2006 Moze sie przyda, kodu nie tlumacze bo bardzo dawno temu go pisalem ale z grubsza sluzy do dynamicznego ladowania dll'i i odpalania okreslonych metod [code=Delphi] unit DllImporter; interface uses ShareMem, sysutils, t[U[X[B&Vg26G&3&W6W&6W7G&ćp4FĆWV7WFVBuW'V6ź4(ąąUą5Ń74; skasowany z pamici'; type TDllImporter = class XXBXX]J[ĘNFW7G'V7F\"FW7G&śfW'&FS&6VGŃĄŃ4(dure GetStop; procedure CloseCurrentDll;B[[]X]S[[S[YN[B&6VGW&R&WVW7D7FfTGVĆU&Vg3&fFPąąQąą%ź4(ąą%Ńnce: HINST; FDllMasterForm:TForm; fActiQ[YN[BBYH][ĘĆTćS7G&ćrgVć7FvWDFĆ6VCFVvW#4(YąŃąą4(ŃIadDllInfo(const i: integer): TDllInfo; published H[[YXY][BV&Ć0&W'GFĆćfś67BŚFVvW%ÓDFĆźIąą%ź4(4(4(4)4(QĄąą%ŃDllImporter=nil; implementation resourcestring sDllSXH Z[H[IM B[[H M b3SsśBvWvG'Ś&w&Rs4FĆRtvFvRs5f]4(4)Qąą%Ń4(4)QąImporter.CloseCurrentDll; var CleanProc : TCleanProc; Y[BY[[HH[^]BX[H]&4FG&W72dFĆ7Fć6R6\"t6Ć6TFĆrb76vĄ ąAŃĄ4( ąA4(4(1ąąnstance ); FDllInstance := 0; FDllMasterForm := nil;B[ĘŃ[YY NB[BBX[7&VFR67BF#7G&ćrf 7#E6V&6&V3Ś&VvQĄąą%Ńą4(ąą4(ąą%Ń := 0; FDllMasterForm := nil; MasterLabel.CaptiHŃXBY]YKHBY]YKfVRŁb77WF2fćDf'7BF\"rćFĆr7\"ŃĄ4(4(15YąoadGauge.MaxValue + 1; until sysutils.FindNext(sr) &lB][[JNB[BBY7WF2fćDf'7BF\"rćFĆr7\"FV&Vv4(Ńąą%źŹ94(1ge.Progress := LoadGauge.Progress + 1; Application.ÓYYB[[][[^ H 77WF2fćD6Ć6R7\"VćCfĆFFTFĆ4(5Ń1 Ń%ą4)4(4)ŃŃQąąmporter.Destroy; begin FDlls := nil; CloseCurrentDlBQ[H[B[]YB[BBYRDFĆ'FW\"WV7WFR67BćRfW'67G&ćrf ąŃ4(Ń4(ŃQąą%ź4(Proc : TExecProc; IGProc : TImportGlobalsProc; begin Y[[H [Y[BHHYYQrt&V6ćRŚW7BW'V6ŚVFVGRb3CsCwrW'V6VźŃź-ŃŃ]rning, [mbYes, mbNo], 0); if i = mrYes then P[B[CB^]B[B7Fć6RŁdFĆ7FW$f&ŁćŁÓŃź!ąąź4(ĄYon,[FDlls[ t ].FVer ] ); if ( s = version ) and (nameHK[YH H[Y[BHHB'&VłVćCVćCbÓFV&VvMĄ5%Ńą4(4(4(emp := FDlls[ i ]; s := temp.FFile; FDllInstance := YXJĘH NBBQH]YĘ7Fć6R6\"t'DvĆ&2rb76vćVBu&2ŃĄ4(%A5Ń5Ń15ePrc, GlobalPrefs ); end else LogError( sInternal QĘNBB^XH]YĘ[ć6R6\& quot;tWV7WFRrd7FfTFĆćRŁćSĄAŃĄ4(A 5Ń, FDllMasterForm ); LogInfo(sDllExecuted+':'+name); [[CBŃ[[ ^XĘNBVćCŚgVć7FDFĆ'FW\"vWD7FfTGVĆTćS7G&ćsŚ&4(Ńąą9ąŃĄ4(IąActiveDllName else Result := 'BaseApp'; end; [[[][[YBY[B[ŁĆVćwFdFĆ2ŚVćC&6VGW&RDFĆ'FW\"vWDFĆźĄą9Ń4)4(!Ń!%9MP4(%foProc: TGetDllInfo; temp : TDllInfo; begin HinstanHHYXJ[S[YJH NB[H]FG&W727Fć6R6\"tvWDFĆćfrćf&2FV4(1!%Ń4(ŃQąŃą; temp.FFile := FileName; if FDlls = nil then ][ H CB[CB][ ćwFdFĆ2dFĆ5vdFĆ2ŁFVŚVć4(4)Qąą%ŃŃMŃ4)4(ŃMŃAGetStopProc; begin GetStopProc := GetProcAddress( FDllI[K Ń][[T ĘH NBYYY ]2FVvWE7F&2VćvćU7FV6PVćvćMŃ4)4(4)ŃQąą%ŃIąą%źĄ i: integer): TDllInfo; begin Result.FName := ''; R[HB[]]H BY H \"fwCvdFĆ2FVWC&W7VBŁdFĆ5t4)4(4)Qąą%ŃIŃŃ5ąA var proc: TGetPrefsProc; begin Proc := GetProcAddrĘ[[K Ń]YĘH NBYYY ĘFV&3ŚVćC&6VGW&RDFĆ'FW\"fĆFFTFą4)4(ąąQŃ4(ŃQąą%o; begin //sprawdzany poprawnosc, czy nie ma dwoch modoBX[^X^XHXBŃ[HBf\"BŁFvdFĆ2F&Vvf\"ŁBłF!ąąź4(ąąmŃt9ąą[y].FName ) and ( FDlls[t].FVer = FDlls[y].FVer H[Y[BHKŃ[]HHYNBć2FFVV ćCVćC4(źź@4(Qel = 0 then exit; SetLength( temp, ToDel ); y := 0; HY HY[BYeFFVĆWFRf6RFV&VvFVŁFVBt4(%4(4(4(ąą SetLength( FDlls, y + 1 ); for t := 0 to y do HH[NB[H[B[BB[BŚ4(źź%ąą QąźźŃŃp $ unit DllBaseTypes; interface uses ShareMem, types]YYBBCB[HXdćS7G&ćułSÓefW#&V\0ŃĄŃlt4(QąŃą4( FFile: String[255]; fModuleId: integer; gBBY][XH[ZXZZYYH[ćŚW DGV&W7VE&2&6VGW&R67B'VcE7G&ćtĆ7B4(4(źŃźŃąwiadomosci TMsgType = (itInfo, itError, itResult); HYHXBYYSHY67B6s7G&ćsś67BGD6uGSDćfb&ŚV7CQŃąą%źAźQąą%źŃą4(TExecProc = Procedure( const MotherForm : TForm; var outForlH N[BX[HYN[B DvWE&Vg5&2&6VGW&S7FF6ĆDvWE7F&2&5ĄQMŃAŃą4(Q%ŃąąABocedure(const mg:TGauge; const mf:TForm;const lmp:TMessageLmY[YĘN[B[[Y[][BB[ [/code] Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
Toster Napisano Czerwiec 12, 2006 Zgłoś Share Napisano Czerwiec 12, 2006 Od razu daje przyklad szkieletu dll'ki wspolgrajacej z tym co wrzucilem powyzej [code=Delphi] //$Id: FatigueDll.dpr,v 1.8 2004/04/22 13:04:24 toster Exp BXH]YYQB CB CBBBSY[KB75WF26Ć76W2FĆ&6UGW2fFwVTf&Ń5Ń4(4(5Ń4(ctiveX, Gauges, LastFiles in '....LastFiles.pas', F]YYQ[[H[ Ń]YYQ[[KB[[ 22r&W7VD&vćŚW\"r7V%77FV5&W7VD&vćŚWIąŃ=Q4(4)ąą4(4) DllVersion = 0.00; //Tworzone na podstawie cFormIdStringHŃ[[RY[B[YHH Ń]YYH[][][[[IFĆWF\"t\"ę&ćw6śsE\"&W7&6VGW&RvŃąą%źźQąą%źŃą4)4(ą; a,t: integer; s:string; begin v1 := 0; v2HB[[YHH[YNBHŃRY[BŁ2rbr2ł3bfwCFV&VvfŃźŹź4(mŃtŃĄ4( v1 := StrToFloat( copy( s, a, t-a ) ); bXZB[[HYHH [BŁFV66W&F#VćC2Ł4VćvćTE7G&ćsAąąŹ4(ŃĄ4(t := a to a + 7 do if s[t] = ' ' then begin HŃ] JKXH H NBVłVćBV6Rb5ErrFV5EąMŃ4(4(4(źY5%Ą, Int(v2) ); v1 := frac(v1); s := FloatToStr(v1); HJL NBHHŃ] ĘNBHHHc\"Łg&2c\"2ŁfĆEF7G\"c\"2Ą4(MŃQąĄź4(o.fVer := info.fVer + v1 + v2; info.FAuthor := DllAutB[BBYH^X]J[NNWDf&Df&7FF6ĆŚ&VvfFwVTf&ŁDfFw ŃĄ5ŃĄ4(ŃMĄ4(tForm := FatigueForm; end; procedure CloseDll;stdcall; Y[BY]YYQH [[YP[[ ]YTf&ŚVćC&6VGW&RvWDVćvćU7FWB&3E7F&2Ńą4)4(MŃ4)4(4)Adure ImportGlobals(const mg:TGauge; const mf:TForm;const lmpYYSĘN[BY[BX]YHHYBXW$f&ŁcĆtW76vU&2ŁĆŚVćCŚW'G0 ąą4(Ń4(ŃMŃ4(%Ńąą GetDllInfo; begin FatigueForm := nil; end. [/code] Always Dark<br /> Link do komentarza Udostępnij na innych stronach More sharing options...
ktoś Napisano Czerwiec 12, 2006 Zgłoś Share Napisano Czerwiec 12, 2006 Dzieki za info i kody Czy się przydadzą, to zależy od tego, ile zrozumiem, ale najpierw muszę je dokładniej przeanalizować Link do komentarza Udostępnij na innych stronach More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.