Zum Inhalt springen

paule22

Mitglieder
  • Gesamte Inhalte

    190
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von paule22

  1. fünf modems junge junge hab zur Zeit nur eine leitung und zwei modems. habs aber hinbekommen mit den RAS zugang unter WinXP läuft hervorragend. Allerdings immer nur für eine Leitung/Teilnehmer. müsste mir evtl. mal ne Telefonanlage zulegen :-)
  2. und ein problem hab ich noch, wenn ich $url = "http://www.web.de/"; $fd=fopen($url,"r"); öffnen will mit den deinen code kommt ne fehler meldung Warning: fopen("http://www.web.de/index.html","r") - Invalid argument in g:\htdocs\web\_index.php on line 10 Warning: Supplied argument is not a valid File-Handle resource in g:\htdocs\web\_index.php on line 12 gehn den nicht alle webseiten zu öffnen ? Paul
  3. jetzt weis ich warum der nicht aufgehört hat zu laden, der hat immer wieder ne GET anweisung ausfühen wollen. nun aber zu dem problem das ich jetzt habe. ich kann zwar jetzt eine datei runterladen und wieder auf den browser ausgeben - wie nen proxy. aber wie mache ich es das ich den string den ich ausgelesen habe auf eine weitere URL kontrolliert bzw. durchsucht. sollte ich dazu alle gedownloadedten dateien in ein verzeichnis speichern und dan nacheinander in den browser ausgeben ? <html><head> <script language="JavaScript"> function winopen() { var URL="http://websearch.myip.org/main.html"; WebSearchMainFrame = window.open("",'x','fullscreen=1,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0'); window.focus(); WebSearchMainFrame.location=URL; WebSearchMainFrame.focus(); } </script> <title>WebSearch.MyIP.org</title> </head> <body bgcolor="#c0c0c0" onload="winopen()"> <b><a href="http://www.web.de">www.web.de</a></b> </body> </html> Paul
  4. jo dank dir geht recht jut kann man den puffer der per fread gelesen wird auch dynamisch setzen (also evtl. mehr als 255 Zeichen ?) kann ja sein das eine zeile im html code länger als 255 zeichen ist oder liest der von anfang bis ende nur 255 zeichen und beginnt beim nächsten fread beim 256 zeichen ? ich kenne fread von c programmierung her und da liest diese funktion immer nur eine zeile aus ? Paul
  5. hallo ich habe folgendes script: <? $filename = "http://www.home.de/"; $fd = fopen ($filename, "r"); $contents = fread ($fd, 1000); fclose ($fd); echo "$contents\n<!-- ende --!>"; ?> läuft auch recht gut nur mit der ausnahme das der browser (IE 6) nicht mehr mit den laden der seite aufhört. habs mal mit $contents = fread ($fd, filesize($filename)); probiert aber da kommt erst recht keine ausgabe als ob der filesize net kennt hab php4 und keine fehlermeldung kam. wie kann ich nun die dateigröße rausbekommen ? damit der browser sich nicht totquält beim laden .... Paul
  6. ich glaube da hab ich schon nen work around mit PHP gefunden siehe fopen() muss halt mal versuchen ops klappt. wie machen es eigentlich die großen ISP ? die habe doch auch einwahlrechner ? wie kann ich eigentlich eine website aufrufen lassen wenn ich mich per RAS eingewählt habe ? Paul
  7. ich weis jetzt das man sich nur ins netz einwählen kann dachte aber ich könnte die angeschlossenen ressourcen nutzen und eine resource ist halt das internet. geht das überhaupt ? routing ? wo finde ich eigentlich die RRAS konsole unter winXP ? unter win2000 solls angeblich so eine geben ? thanks for reply Paul
  8. so, jetzt habe ich es endlich mal geschafft RAS zu machen ich kann auch auf den einwahl rechner zugreifen via webserver als url brauch ich nur den computer namen im netz verwenden. aber jetzt kommt meine fräche, wie kann ich von einen RAS einwahlrechner auf das internet zugreifen ? das ich z.B. eingebe www.domain.de und die website im internet wird geladen. wenn möglich über einen Proxy auf den RAS server kann jemand helfen ?? habe winxp pro Paul
  9. Hallo netzianer ich programmiere gerade mit der TAPI herum und bin da an grenzen gestossen. Ich hab einen Einwahlserver (TAPI program) das auf einkommende calls wartet und dieses auch beantwortet. nur ist dies bei herkömmlicher methode auf eine leitung begrenzt. wie kann ich nun mehreren benutzern ermöglichen gleichzeitig in den server einzuwählen habe zur zeit ISDN und DSL was brauche ich zusätzlich an hardware ? router ? switches ? telefonalage ? bitte alle infos posten danke für antworten Paul was ich vorhabe: ganz einfach ein netzwerkaufbauen in dem sich 5 benutzer einwählen können ...
  10. Hallo ich habe soeben dynamisches DNS, sodass ich nun meinen eigenen server hosten kann. nun mal ne fräche dazu: ich habe drei dynDNS auf die selbe dynIP ist es irgendwie möglich die URL die in die URL leiste eingeben wurde zu bestimmen ? z.B WENN (www.domain1.de) DANN GO domain1.html ELSE WENN www.domain2.de DANN GO domain2.html ?? danke für rückantworten Paul
  11. jo hast recht, das war das Problem !!! Ich dachte immer, daß, wenn eine Struktur im Speicher initializiert wird alle Items auf NULL gesetzt werden. Anscheinend nicht Ist eigentlich blöd das man das von hand nachträglich abändern muss. Aber in gewisser Hinsicht logisch. Der Speicher wird ständig beschrieben -> ständig neues Zeug. danke für deine Hilfe !!!
  12. okay, hier ist der gesammte original code: die Struktur funktioniert - auch die AnsiString zuweisung außer was nicht funzt ist get_local_variable und evtl. dann auch add_local_variable .... hoffe du kannst was damit anfangen ... // File struct_def.h extern int fatal(AnsiString); // ---------------------------------------------------------------------------- // structure to store the variables that are defined by "local" ... // ---------------------------------------------------------------------------- struct __dbase_local_variables { AnsiString name; int type; double var_value; AnsiString var_string; bool var_bool; struct __dbase_local_variables *next; }; struct __dbase_variablen_struct { TObject *Sender; HWND Handle; bool Visible; int id; TdbWindowForm *t_form; TRAColorButton *t_button; TEdit *t_edit; AnsiString t_edit_text; AnsiString name; AnsiString parent; // for classes AnsiString proc_parent; // for procedures TColor fg_colornormal, fg_colorhighlight; TColor bg_colornormal, bg_colorhighlight; // hier die besagte struktur .... struct __dbase_local_variables *local_var; AnsiString proc_onclick; AnsiString proc_ongotfocus; AnsiString proc_onlostfocus; double var_value; AnsiString var_string; int push_count; int file_pos; int line_no; int type; struct __dbase_variablen_struct *next; }; typedef __dbase_variablen_struct __dbase_variablen_struct; extern __dbase_variablen_struct *__dbase_variablen_list; extern __dbase_variablen_struct *get_variable(AnsiString); extern __dbase_variablen_struct *add_variable(AnsiString); extern __dbase_variablen_struct *get_variable(HWND window); extern __dbase_variablen_struct *var_button_ptr; extern __dbase_variablen_struct *var_ptr; extern __dbase_local_variables *add_local_variable(__dbase_variablen_struct*, AnsiString); extern __dbase_local_variables *get_local_variable(__dbase_variablen_struct*, AnsiString); extern bool del_variable(AnsiString name); //File var_store.cc: #include "struct_def.h" // --------------------------------------------------------------------------- // 1. Typenzuweisung ... // --------------------------------------------------------------------------- __dbase_variablen_struct *__dbase_variablen_list = (__dbase_variablen_struct *) 0; __dbase_variablen_struct *var_ptr; // --------------------------------------------------------------------------- // prüfen, ob Variable in der Struktur vorhanden ist ... // --------------------------------------------------------------------------- __dbase_variablen_struct *get_variable(AnsiString name) { __dbase_variablen_struct *ptr; for (ptr = __dbase_variablen_list; ptr != (__dbase_variablen_struct *) 0; ptr = (__dbase_variablen_struct *) ptr->next) if (ptr->name == name) return ptr; return 0; } __dbase_variablen_struct *get_variable(HWND window) { __dbase_variablen_struct *ptr; for (ptr = __dbase_variablen_list; ptr != (__dbase_variablen_struct *) 0; ptr = (__dbase_variablen_struct *) ptr->next) if (ptr->Handle == window) return ptr; return 0; } __dbase_variablen_struct *add_variable(AnsiString name) { __dbase_variablen_struct *ptr; ptr = new __dbase_variablen_struct; ptr->name = name; ptr->next = (struct __dbase_variablen_struct *) __dbase_variablen_list; __dbase_variablen_list = ptr; return ptr; } __dbase_local_variables *add_local_variable(__dbase_variablen_struct *proc_ptr, AnsiString name) { __dbase_local_variables *ptr; ptr = new __dbase_local_variables; ptr->name = name; ptr->next = (struct __dbase_local_variables *) proc_ptr->local_var; proc_ptr->local_var = ptr; return ptr; } __dbase_local_variables *get_local_variable(__dbase_variablen_struct *proc_ptr, AnsiString name) { __dbase_local_variables *local_ptr; for (local_ptr = proc_ptr->local_var; local_ptr != (__dbase_local_variables *) 0; local_ptr = (__dbase_local_variables *) local_ptr->next) { if (local_ptr->name == name) return local_ptr; } return 0; } // ---------------------------------------------------------------------------- // deletes a stored variable by it's name ... // ---------------------------------------------------------------------------- bool del_variable(AnsiString name) { int index = 0; __dbase_variablen_struct *ptr; /* AnsiString str; str = "Durchlauf 1:\n"; for (ptr = __dbase_variablen_list, index = 0; ptr != (__dbase_variablen_struct *) 0; ptr = (__dbase_variablen_struct *) ptr->next, index++) { str += IntToStr(index) + ": " + ptr->name + ", next: "; if (ptr->next) str += ptr->next->name; else str += "NULL"; str += "\n"; } ShowMessage(str); */ for (ptr = __dbase_variablen_list, index = 0; ptr != (__dbase_variablen_struct *) 0; ptr = (__dbase_variablen_struct *) ptr->next, index++) { if (AnsiLowerCase(ptr->name) == AnsiLowerCase(name)) { // -------------------------------------------------------- // when der index = 0 ist, prüfen, ob hinter den index noch // daten sind, wenn ja, diese vorschieben ... // -------------------------------------------------------- if (index == 0) { __dbase_variablen_struct *save_ptr; save_ptr = ptr->next; delete ptr; __dbase_variablen_list = save_ptr; return true; } __dbase_variablen_struct *prev_ptr; int prev_index; for (prev_ptr = __dbase_variablen_list, prev_index = 0; prev_ptr != (__dbase_variablen_struct *) 0; prev_ptr = (__dbase_variablen_struct *) prev_ptr->next, prev_index++) { if (prev_index == index-1) { prev_ptr->next = ptr->next; delete ptr; return true; } } break; } } /* str = "Durchlauf 2:\n"; for (ptr = __dbase_variablen_list, index = 0; ptr != (__dbase_variablen_struct *) 0; ptr = (__dbase_variablen_struct *) ptr->next, index++) { str += IntToStr(index) + ": " + ptr->name + ", next: "; if (ptr->next) str += ptr->next->name; else str += "NULL"; str += "\n"; } ShowMessage(str); */ return false; } // File: start.cc #include "struct_def.h" void handle_file(AnsiString str) { // ------------------------------- // delete/erase var_ptr struct ... // ------------------------------- while (__dbase_variablen_list != NULL) { __dbase_variablen_struct *p = __dbase_variablen_list; __dbase_variablen_list = __dbase_variablen_list->next; delete p; } var_ptr = add_variable("start"); if (!var_ptr->local_var) { var_ptr->local_var = new __dbase_local_variables; var_ptr->local_var->next = NULL; } __dbase_local_variables *local_ptr; // hier ist die mackenhafte function if ((local_ptr = get_local_variable(var_ptr,str))) fatal("LOCAL Variable bereits definiert."); ShowMessage("add"); // und diese Funktion macht evtl. auch dann mackken ... local_ptr = add_local_variable(var_ptr,str); } irgend wo weiter im code: handle_file("begin"); handle_file("start");
  13. Hallo, hab ich trotz meiner bemühungen doch was übersehen. ptr->name ist im eigentlichen Code auch ein AnsiString, deshalb funzt des auch mit der zuweisung - nur hier im Forum dachte ich, lieber auf ANSI C umzustellen als auf Borland Code zurückzugreifen. Die folgende Funktion müsste dann so lauten: local_test_struct *add_local_variable(var_struct *proc_ptr, char *name) { local_test_struct *ptr; ptr = new local_test_struct; ptr->name = new char[strlen(name)]; strcpy(ptr->name,name); ptr->next = (struct local_test_struct *) proc_ptr->local_ptr; proc_ptr->local_ptr = ptr; return ptr; } funzt aber auch net so richtig irgendwas anderes muss das sein. Paul
  14. Hallo Programmierer, ich hab da ein kleines Problem mit geschachtelten Strukturen. I habe folgende Strukturen: struct local_test_struct {  char *name;  int type;  struct local_test_struct *next; }; struct var_struct {  char *name;  int type;  struct local_test_struct *local_ptr;  struct var_struct *next; }; Die initial Struktur "var_struct" kann ich einwandfrei initializieren und damit arbeiten - arbeitet perfekt. Aber wenn ich "local_ptr" verwenden will bekomme ich immer einen Laufzeitfehler - Fehler in zuweisung - ACCESS VIOLATION Fehler. Ich benutze folgenden Code / Funktionen // Datei: xyz.cc typedef var_struct var_struct; var_struct *variablen_list; var_struct *variablen_list = (var_struct *) 0; var_struct *var_ptr; local_test_struct *add_local_variable(var_struct *proc_ptr, AnsiString name) {  local_test_struct *ptr;  ptr = new local_test_struct;  ptr->name = name;  ptr->next = (struct local_test_struct *) proc_ptr->local_ptr;  proc_ptr->local_ptr = ptr;  return ptr; } local_test_struct *get_local_variable(var_struct *proc_ptr, AnsiString name) {  local_test_struct *l_ptr;  for (l_ptr = proc_ptr->local_var;  l_ptr != (local_test_struct *) 0;  l_ptr = (local_test_struct *) l_ptr->next)  {  if (!strcmp(l_ptr->name,name))  return l_ptr;  }  return 0; } // und hier ist der Code, der mir ein paar kopfschmerzen sowie // einen Access Violation Laufzeitfehler bereitet... void handle(void) {  ...  // do other stuff mit var_struct  // z.b. init und add_variable("test");  ...  if (!var_ptr->local_var)  {  var_ptr->local_ptr = new local_test_struct;  var_ptr->local_prt->next = NULL;  }  local_test_struct *l_ptr;  if ((l_ptr = get_local_variable(var_ptr,str))) // diese Funktion bereitet mir kopfschmerzen  fatal("Variable bereits definiert."); } Was ist an der codierung so falsch ? schließlich funktioniert die folgende funktionen problemlos: var_struct *get_variable(char *name) {  var_struct *ptr;  for (ptr = variablen_list;  ptr != (var_struct *) 0;  ptr = (var_struct *) ptr->next)  if (!strcmp(ptr->name, name) return ptr;  return 0; } und die folgende funktion funktioniert auch einwandfrei ... var_struct *add_variable(char *name) {  var_struct *ptr;  ptr = new var_struct;  ptr->name = name;  ptr->next = (struct var_struct *)  variablen_list;  variablen_list = ptr;  return ptr; } hab mir einfach mal gedacht, den bereits existierenden Code (add_variable und get_variable) zu verwenden, um auf die Struktur innerhalb der Struktur zugreifen zu können (add_local_variable und get_local_variable) aber anscheinend geht das nicht so ohne weiteres - weis jemand weiter und wie ich das lösen kann ?? Vielen Dank für Rückantworten Paul
  15. juhu, ich haps hinbekommen und des ohne STACK automat - bloss ne strucktur geschrieben (hab ich ja schon mal erwähnt) und nen paar IF anweisungen im code und schon klappt das hervorragend danke an alle, die mir denkanstösse gegeben haben. Paul
  16. jo danke für dein Hinweis. das Problem was bei diesen Interpreter ist, die Zeichenketten werden linear abgearbeitet - wie eine BATCH datei. Ansonsten müsste ich mir was anderes überlegen - sowas wie ne STACK machine oder so was in der art ? erst den gesammten code einlesen in nen string und dann den string (Stack) abarbeiten. Ist das net doppelt gemoppelt ?
  17. jo danke crush, die IFs zähle ich mit. hab mal daran gedacht ne struktur mit in spiel zu bringen etwa so: #define NO_EXEC 1 #define YES_EXEC 0 struct if_stmt_block { char yes; char no; } struc if_stmt_block stmt[2048]; wenn .yes gesetzt ist mit YES_EXEC und .no = NO_EXEC, dann normalen IF block abarbeiten ansonsten (.yes = NO_EXEC und .no = YES_EXEC - dann ELSE block abarbeiten) dann schaut in etwa der pseudo code so aus, der abgearbeitet werden muss - irgendwie - halt mal ne neue idee: if_rec = 0; IF <var1> # 2      // if zählen ...      if_rec++;      // dieser Pseudo code muss natürlich erstmal auf korrektheit      // überprüft werden - siehe handle_if_statemnt()      //      if (var1 ist ungleich 2)      dann         stmt[0].yes = YES_EXEC;         stmt[0].no = NO_EXEC;     // ELSE block nicht beachten      ansonsten         stmt[0].yes = NO_EXEC;         stmt[0].no = YES_EXEC;     // ELSE block abarbeiten      end      IF <var2> = 2      if_rec++;      // hier muss überprüft werden, ob der momentane CodeBlock      // abgearbeitet werden kann - siehe .yes .no          stmt[1].yes = YES_EXEC;          stmt[1].no = NO_EXEC;      ENDIF      // nach jedem ENDIF, if_rec runterschrauben      if_rec--;      // hier muss auch/nochmals überprüft werden, ob der momentane CodeBlock      // abgearbeitet werden kann - könnte ja sein, das hinter dem      // ENDIF weitere Anweisungen stehen ENDIF if_rec--; // ab hier gehts dann normal weiter if (if_rec == 0) ..... muss halt nur noch eine entsprechende routine for jedem DT_IF und DT_ENDIF und natürlich auch dT_ELSE, die überprüft, ob die bedingungen zutreffen. dann wäre eigentlich das Problem gelöst ? denke ich jedenfalls. in der vorliegenden Pseudo form können IF's maximal 2047 mal verschachtelt sein - man könnte des auch dynamisch machen um auf unbegrenzt (gut 2 Millarden etwa hochschrauben kann. Aber der übersichtlichkeit halber hab ich des mal statisch gelassen. jede idea des händlings ist willkommen !!! vielleicht is des auch ne anregung für jemand anderen, der das gleiche Problemchen hat ... Paul
  18. und wie rekursive ich die Funktion mit den bestehenden Code am besten ??
  19. moin, blose faulheit, okay, ja habt ja recht. das gleiche posting hatte ich in einen englischen forum gepostet und wollte mir die mühe ersparren sorry leute. ist doch trotzdem mal ne abwechslung im tristen alltag - oder ? was Linux/Unix anbelangt - das Ding mit Lex/Yacc und Bison - hab ich mal probiert auf DOS, klappt auch soweit recht gut mit den GNU GCC Tools, allerdings verwende ich den Borland CBuilder und da kommt es zu komplikationen beim code übersetzten. Wäre vielleicht mal ne interessante Aufgabe für jemanden, diese teile - also Lex/Bison für Borland produkte gangfähig zu machen - würde mich auch erkenntlich zeigen :-) also wie gesagt, ich versuche einen interpreter zu schreiben, der IF ELSE ENDIF auswerten kann. allerdings scheitert die ganze sache nicht am eigentlichen auslesen von IF ELSE ENDIF, sondern darin, dass, wenn ein ELSE oder ein ENDIF innerhalb eines IF Blocks vorkommt. dann verwende ich nämlich folgenden Code: switch(get_token()) { case DT_ENDIF: if (!if_rec) fatal("ENDIF ohne IF-Bedingung nicht erlaubt."); if_rec--; if (!if_rec) if_stmt = 0; else { for (int pos = 0; pos < if_rec; pos++) if (exec_if_stmt[pos] == YES_EXEC) if_stmt = 0; } break; case DT_ELSE: if (if_rec > 0) if (exec_if_stmt[if_rec] == YES_EXEC) if_stmt = 0; else if_stmt = 1; break; case DT_IF: if_rec++ handle_if_statment(); break; } und nun der code zum parsen der IF anweisung ... handle_if_statement() { AnsiString saved_token; switch (get_token()) { case DT_USERDEF: { saved_token = AnsiLowerCase(token_buffer); AnsiString str; str = "procedure_local_"; str += saved_token; if (can_exec && !if_stmt) { if (!(var_ptr = get_variable(str))) fatal("IF-Variable ist nicht definiert/bekannt."); int code = lex(); if (code != EQUALSIGN) fatal("Gleichheitszeichen '=' hier erwartet."); // ------------------------ // IF <variable> = EXPR ... // ------------------------ if (var_ptr->type == VARTYPE_VALUE) { double wert1 = var_ptr->var_value; double wert2 = handle_expr(EP_AND); if (wert1 == wert2) { ShowMessage("wert ist gleich"); exec_if_stmt[if_rec] = YES_EXEC; if_stmt = 0; return RET_OK; } else { ShowMessage("wert ist ungleich nicht gleich nix gleich"); exec_if_stmt[if_rec] = NO_EXEC; if_stmt = 1; return RET_OK; } } } else { int code = lex(); if (code != EQUALSIGN) fatal("Gleichheitszeichen '=' hier erwartet."); next_t: double wert2 = handle_expr(EP_AND); if_stmt = 1; exec_if_stmt[if_rec] = NO_EXEC; return RET_OK; } } break; default: fatal("Benutzerdefiniertes token hier erwartet."); break; } } der code funktioniert einwandfrei - auch die Auswertung des IF ELSE ENDIF Blocks, sofern es immer nur einer is. Aber was is, wenn mehrere IF-ELSE-ENDIF blöcke geschachtelt werden ?? dafür brauche ich ne Lösung. so das wars eigentlich. Paul
  20. Hi C coders 4, I try to program a interpreter and have the problem of a IF - ELSE - ENDIF statement. here is the pseudo code: Note: if_stmt = 0 stands for execute flag for the following IF statement, 0 for ELSE - not true. stmt[pos] is a variable that store, if the code block is true for EXEC - YES or NO code in two brackets [ ] are code that should be handle by the program if a token like ENDIF is reading from the file. IF <var1> = 1 Â if_pos++ Â stmt[if_pos] = YES_EXEC Â if_stmt = 0 Â IF <var2> = 1 Â if_pos++ Â stmt[if_pos] = YES_EXEC Â Â ELSE stmt[if_pos] = NO_EXEC if_stmt = 1 // here comes a second problem: // IF var2 not 1 // than if_stmt must be true, also // if_stmt = 0 IF <var3> = 1 if_pos++; stmt[if_pos] = YES_EXEC if_stmt = 0 ELSE stmt[if_pos} = NO_EXEC if_stmt = 1 ENDIF [ if_pos-- ] ENDIF [ if_pos-- ] ELSE stmt[if_pos] = NO_EXEC if_stmt = 1 ENDIF [ if_pos-- ] // ------------------------------------------------------------------------- ----- // no more if statement - set the execution flag to true: 0 // ------------------------------------------------------------------------- ----- if (if_pos == 0) { if_stmt = 0; } next stage of pharse: // --------------------------------------------------------------- // here comes code that can be appear in a IF // statement block or outside ... // --------------------------------------------------------------- switch (get_token()) { case DT_PRINT: { handle_string(); if (if_stmt == 0) Memo->Lines->Add( parsed_token_string ); else if (if_stmt == 1) { /* do nothing - no output */ } } break; } here is the handle procedure that should handle the IF block: (raw code) please correct it ... // global values ... #define YES_EXEC 0 #define NO_EXEC 1 int if_pos = 0; int stmt[2048]; int handle_procedure(void) { int count_if_statments = 0; for (; { switch (get_token()) { case DT_PRINT: { handle_string(); if (if_stmt == 0) Memo->Lines->Add( parsed_token_string ); } break; case DT_ENDIF: { if (count_if_statments == 0) return fatal("ENDIF without IF-Block start"); if_pos--; count_if_statments--; // no more IF blocks, enable exec if (if_pos == 0) { if_stmt = 0; } } break; case DT_ELSE: { // here comes the problem ... // what is, when the previous IF check is false ?? // and vice versa true ?? // if it true, than must the next IF in the ELSE block // false, too // Also so: // // var1 = 2 // var2 = 4 // IF <var1> = 3 // ELSE // IF <var2> = 4 // ELSE // ENDIF // ENDIF and so on // if (stmt[if_pos] == YES_EXEC) if_stmt = 1; else if_stmt = 0; } break; case DT_IF: { count_if_statements++; if_pos++; handle_if_statment(); } break; case DT_RETURN: return RET_OK; // to leave the for-loop break; } } } any help are very welcome psst: please tell me your money account to sent you 5 Dollars for solving this problem :-) okay, joke, but not impossible :-) If you would like to have the working code for "get_token()" -- let me know. thanks forward Paul okay, here comes the get_token() code, to make it easier to following the example code ... FILE *input_file; AnsiString token_buffer; #define ENDFILE -1 #define IDENTIFIER 1 #define NUMBER 2 #define POINT_TOKEN 100 #define EQUALSIGN 124 #define MINUS 125 #define ILLEGAL 140 #define DT_PRINT 1000 #define DT_IF 1001 #define DT_ENDIF 1002 #define DT_ELSE 1003 // ------------------------------------------------------------------------- -- // get one charachter an handle comments in a dbase file ... // ------------------------------------------------------------------------- -- int skip_white_space(void) { AnsiString buffer; char c; char inside; c = fgetc(input_file); for (; { int cplus_comment; switch © { case '/': c = fgetc(input_file); // -------------------------------------------- // at back of a comment can be a // nummeric operator ... // -------------------------------------------- if (c >= '0' && c <= '9' || c == '(' || c == ' ' || c == '\n') { ungetc(c,input_file); return '/'; } else if (c != '*' && c != '/') { AnsiString str; str = "undefined char `/"; str += c; str += "' found"; return fatal(str); } cplus_comment = (c == '/'); c = fgetc(input_file); inside = 1; while (inside) { if (!cplus_comment && c == '*') { while (c == '*') c = fgetc(input_file); if (c == '/') { inside = 0; c = fgetc(input_file); } } else if (c == '\n') { line_no++; if (cplus_comment) inside = 0; c = fgetc(input_file); } else if (c == EOF) return fatal("comment line not correctly end."); else c = fgetc(input_file); } break; case '\n': line_no++; case ' ': case '\t': case '\f': c = fgetc(input_file); break; default: return ©; } } } int lex(void) { char buffer[5]; int pos = 0; int c; c = skip_white_space(); switch © { case EOF: { return (ENDFILE); } break; case '.': return POINT_TOKEN; case '?': return DT_PRINT; case 'A': case 'B': case 'C': case 'D': case 'E': case 'F': case 'G': case 'H': case 'I': case 'J': case 'K': case 'L': case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R': case 'S': case 'T': case 'U': case 'V': case 'W': case 'X': case 'Y': case 'Z': case 'a': case 'b': case 'c': case 'd': case 'e': case 'f': case 'g': case 'h': case 'i': case 'j': case 'k': case 'l': case 'm': case 'n': case 'o': case 'p': case 'q': case 'r': case 's': case 't': case 'u': case 'v': case 'w': case 'x': case 'y': case 'z': case '_': { sprintf(buffer,"%c",c); token_buffer = buffer; while (isalnum© || c == '_') { if (pos) { sprintf(buffer,"%c",c); token_buffer += buffer; } c = fgetc(input_file); pos++; } ungetc(c, input_file); return (IDENTIFIER); } break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': { int token_val = 0; token_value = 0; while (isdigit© || c == '.') { if (c == '.') { token_val = 0; c = fgetc(input_file); while (isdigit©) { token_val = token_val*10 + c - '0'; c = fgetc(input_file); } goto n2; } else { token_value = token_value*10 + c - '0'; c = fgetc(input_file); } } n2: AnsiString str; str = token_value; str += ","; str += token_val; double wert = StrToFloat(str); token_value = wert; ungetc(c, input_file); return (NUMBER); } break; case '=': { return EQUALSIGN; } break; case '-': { return '-'; } break; case '*': { return '*'; } break; case '/': { return '/'; } break; case ';': { return ';'; } break; case '(': { return '('; } break; case ')': { return ')'; } break; case '>': { return '>'; } break; case '<': { return '<'; } break; default: { return c; } } return ILLEGAL; } struct DT_variables { char *name; int id; } dt_vars[] = { "if", DT_IF, "endif", DT_ENDIF, "else", DT_ELSE, 0,0 }; // ------------------------------------------------------------------------- --- // get token, and return an id number of it ... // ------------------------------------------------------------------------- --- int get_token(void) { int code; for (; { code = lex(); if (code == IDENTIFIER || code == DT_PRINT) { if (code == DT_PRINT) return DT_PRINT; int c; for (c = 0; c < MAX_TOKEN; c++) { if (LowerCase(token_buffer) == dt_vars[c].name) return dt_vars[c].id; } return DT_USERDEF; } else if (code == NUMBER) { return fatal("expected a string-Token here."); } else if (code == ENDFILE) { return ENDFILE; } } return RET_OK; } hoffentlich kann sich da einer reinwusseln ? thanks for help Paul
  21. hier ist des rätsels lösung: <script language="JavaScript"> function winopen() { // URL zum Fenster var URL="http://192.168.1.2/index.html"; WebSearchMainFrame = window.open("",'x','fullscreen=1,toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0'); WebSearchMainFrame.blur(); window.focus(); WebSearchMainFrame.location=URL; WebSearchMainFrame.focus(); } </script>
  22. Hallo WebDesigner, im Internet bin ich beim surfen auf so manche website gestoßen. eines hat mich dabei sehr interessiert: Wie kann ich ein Fenster so öffnen oder anzeigen lassen, dass ich keinen Rahmen, Titelleiste und so weiter habe. und das ganze auch noch frei positionieren kann hab versucht den quellcode zu bekommen aber nix zu machen bei solchen seiten - rechte maustaste blockiert. oder ist das nur serverseitig zu realisieren ? Lösungen sollten in HTML oder JavaScript sein Danke Paul
  23. paule22

    su automatisieren

    jo, danke für die Antworten, habe SUDO ausprobiert, des verlangt ja auch nen passwort. aber ich habs nicht zum laufen gebracht Grund: user is not listed in /etc/sudoers ich also den benutzer eingetragen, geht immer noch nicht ! hat jemand einen Tip wie das Teil doch funktioniert ? paul
  24. paule22

    su automatisieren

    jo. chmod und chown will ich ausführen aber dazu sind doch root rechte erforderlich. Ich habe ein LinuxBox auf der ich Programme schreibe (in user mode) root verwende ich nur selten - wenn mal was eingestellt wird. mein skript schaut wie folgt aus: #!/bin/sh make su --command='chown root:root start" su --command='chmod 4511 start" exit 0 jedesmal muss ich zweimal das passwort des root eingeben. ich weis das dies ein sicherheitsloch ist aber ich dachte mir. die arbeit ein wenig zu erleichtern, da ich viele "makes" mache. Aber hast schon recht, nen ziemliches großes Sicherheitsloch ... aber ich brauche root rechte für das Ausgangsprogramm, weil dies die SVGALIB benutzt. Ich habe immer die Fehlermitteiölung der Bibliothek erhalten start: can't get I/O permissions. ich habe lange getüftelt wie ich das Ausgangsprogramm in user-mode starten kann und bin zu den im script stehenden resultat gekommen (siehe oben) klappt ziemlich fein das ganze nur muss ich aufpassen, was ich im programm alles mache - da root rechte nun vorhanden sind. ich müsste vor jeden FOPEN() ein STAT() machen, um die OWNER UID zu ermitteln / zu handeln. Ist es eigentlich möglich eine fopen() Funktion in C++ zu schreiben, die den gleichen Namen hat, ausgenommen, daß diese Funktion dann in einen Namespace steht ?

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...