Zum Inhalt springen

paule22

Mitglieder
  • Gesamte Inhalte

    190
  • Benutzer seit

  • Letzter Besuch

Alle Inhalte von paule22

  1. Hallo, suche nach einer Möglichkeit, den Code für __alloca, __main __argv in source Form in naswm.exe (netwide assembler) zu verwandeln und anzuwenden. Wer Ideen hat, bitte schreiben. Grund des Anliegens: mit alink.exe obj Dateien unter Windows linken, ohne das GCC System auf den Computersystem zu verwalten. Bis jetzt crasht das Programm immer, wenn ich mit alink.exe linke. Könnte daher zusammenhängen, das die verwendeten C++ Klassen noch nicht initialisiert sind. Gruß pauel22
  2. Hallo, wie kann ich den Developer Flash Server 3.5 und den Live Flash Encoder im AuslieferungsZustand verwenden, das der Server richtiger eeise koreckt connectiert? Bei meinen Versuchen kommt stets die Meldung: "Can'T connect to Primary Server .." Was mach ich da falsch? Für sachdienliche Tipps sind gern gesehen Gruß paule
  3. Hallo, wie kann ich wie in Flash CS3 üblich, ein FLVPlayer Object auf die Bühne platzieren? Ich habe nach den Component gesuch, aber nichts gefunden. Wäre froh, wenn jemand weiterhelfen kann. Danke paule22
  4. Hallo Perfiliev! unter: RapidShare: Easy Filehosting habe ich eine abgeänderte Yacc-Datei hochgeladen. Ich habe alle möglichen Varianten + num = num + num = exp + exp = num + exp = exp primitiv programmiert. Klappt auch so weit gut mit var1 = 10.3 var2 = 2.1 if var1 = var2 ... allerdings tritt jetzt das ein Problem auf, wenn ich: var0 = 1.2 var1 = 10.2 var3 = 1.1 + var0 // <-- hier if var3 = ....- dann wird das AssemblerFile derart verstopft ... kannst Du mal nachschauen und ggf. eine Lösung posten? Vielen Dank Jens
  5. Danke Perfiliev! wenn Du anstelle der pcode.pas, die pcode.y gepostet hättest, wäre mir ein klein wenig Sucharbeit ersparrt geblieben. Aber naja, fürs erste geht das schon. Danke es funktioniert. Woher Du nur die ganzen Ideen herzauberst ;-) Gruß Jens
  6. Bitte sehr, hoffe das hilft! RapidShare: Easy Filehosting Gruß Jens
  7. Hallo Perfiliev, ja habe ich. geht prima. aber das ist nicht der Schwerpunkt. Schwerpunkt ist, dass Yacc anscheinend kein richtigen Code zurüclgibt. Gruß Jens
  8. Hallo Perfiliev, vielleicht sollte ich etwas zu dem Projekt sagen ... Es handelt sich hierbei wohl eher um einen Skript-Compiler. Das hört sich jetzt vielleicht lustig an, ist aber so :-) Der Kern des Compilers wurde von mir in Delphi 7 gestartet/programmiert. Mittlerweile wird das Projekt unter Windows Vista und CodeGear (Delphi 2009) weiter entwickelt, da es zu Problemen mit Delphi 7 unter Vista (Kompatibilität) gab. Unter dem WebLink: TP Lex/Yacc kann man die tply41a.zip downloaden (Yacc für Pascal) So als Grundlage für den Compiler dient der nopaste code vom letztem Posting. Yacc ist ja Stack basierend, vielleicht hier die kleine Unmissverständlichkeit. Der ParserCode erzeugt aus einer Quelldatei NASM (Netwide Assembler) Win32 Code. NASM verwende ich dann um den ASM-Text/Ausgabe in Win32 obj binary umzuwandeln. Dieser obj Code ist kompatibel mit den MingW32 GCC Compiler. Deshalb auch meine Wahl des Assemblers. Mittels selbst geschriebener Lib's (ausser Qt 4.3.4) werden dann die Daten gegeneinander zu einer EXE Datei gelinkt. Eine BATCH Datei würde dann so aussehen: set path=i:\mingw\bin;i:\qt\4.3.4\bin;%path% nasm -f win32 11.asm g++ -o 11.exe 11.obj -Li:\Qt\4.3.4\lib -L.\lib -lkalib -lkagraph -lxbase -lkernel32 -lwin32k -lQtCore4 -lqtmain -lQtGui4 Nun zu den cmp Funktionen: Dazu dient ein Ausschnitt aus der Datei jk_class.cc: ... float ErgebnisWert = 0.0; float vglwertA1 = 0; float vglwertA2 = 0; extern "C" void set_vergleichswert_A1(int nach, int vor) { vglwertA1 = QString("%1.%2").arg(vor).arg(nach).toFloat(); } extern "C" void set_vergleichswert_A2(int nach, int vor) { vglwertA2 = QString("%1.%2").arg(vor).arg(nach).toFloat(); } // die folgende Funktion muss noch angepasst werden // Sie steht nur exemplarisch (erstmal) hier aufgelistet ... extern "C" void set_vergleichswert_byvar(float v1, float v2) { vglwertA1 = v1; vglwertA2 = v2; } extern "C" int vergleiche_cmpeq(void) { if (vglwertA1 == vglwertA2) return 1; else return 0; } ... Zu Deiner Frage mit (siehe obigen Code _exemplarisch_), ja das ist richtig, aber das ist das wenigste Problem (erstmal). _vergleiche_cmpeq hat wie im Code oben zu sehen ist kein Argument. Zu den CodeAbschnitt Je0: call _vergleiche_cmpeq hier handelt es sich um eine NichtOptimierter Codestelle. Es wird halt nochmals auf "=" (Gleichheit) geprüft - der Compiler in seiner jetzigen Form ist halt noch ein recht dummy/dummer Automat, der keinen optimierten Code auswirft. So das dazu erstmal. Nun zum eigentlichem Problem: Das Programm YACC (so scheint es mir) ist ein STACK/(Keller) (YetAnother) Compiler-Compiler Tool. Doch warum verhält sich dieses Tool so merkwürdig? Beispiel: zahl : NUMMER_TOKEN ; t_var : /* kann leer bleiben */ | zahl zahl { wird als Stack von links nach rechts ausgewertet also zahl1 dann zahl2 } ; verständlich :confused: Also müsste doch mit dem vorliegenden YACC-Code der AsmCode nicht wie: ... call _set_vergleichswert_byvar add esp, 8 push dword [@var_var1] push dword [@var_var2] call _vergleiche_cmpeq ... aussehen, sondern so: ... push dword [@var_var1] push dword [@var_var2] call _set_vergleichswert_byvar add esp, 8 call _vergleiche_cmpeq cmp eax, 1 jne near Le0 ... oder liege ich da jetzt falsch? Für sachdienliche Hinweise bin ich sehr dankbar! Gruß Jens
  9. Hallo, wie man ein Assemblerprogramm schreiben kann, ist für mich noch etwas neuland. Kann aber schon Konstrukte aufstellen. unter nopaste.info - free nopaste script and service könnt Ihr eine etwas überarbeitete Version vorfinden. Was mir komisch vorkommt ist, das Stack nicht gleich Stack ist. Zum Beispiel beginnend ab Zeile 256 hochrangelnd auf Zeile 216 -> expr (Zeile 88) -> weiter bei Zeile 118. Warum wird dann folgender Code erzeugt: Für Ideen und Vorschläge bin ich jedem dankbar! Gruß Jens --- BITS 32 cpu 486 extern _exit, _show_message extern _set_vergleichswert_A1 extern _set_vergleichswert_A2 extern _set_vergleichswert_byvar extern _vergleiche_cmpeq @var_var1: dd 10 @Pshow_message0: db "ist 5",0 @Pshow_message1: db "juhu 5",0 @Pshow_message2: db "nuja halt 7",0 @Pshow_message3: db "ok",0 @Pshow_message4: db "ist nicht 5",0 segment .text global _start_main _start_main: push ebp mov ebp, esp ; die folgende Zeilen müssten doch theoretisch ; unter push [@var_var2] stehen? ; mache ich einen Programmierfehler oder liegt ; das Problem am Yacc? call _set_vergleichswert_byvar add esp, 8 push dword [@var_var1] push dword [@var_var2] call _vergleiche_cmpeq cmp eax, 1 jne near Le0 push @Pshow_message0 call _show_message jmp near Lj0 Le0: call _vergleiche_cmpeq cmp eax, 1 jne near Le2 push @Pshow_message1 call _show_message jMP near Lj2 Le2: call _vergleiche_cmpeq cmp eax, 1 jne near Le4 push @Pshow_message2 call _show_message push @Pshow_message3 call _show_message jMP near Lj4 Le4: push @Pshow_message4 call _show_message jmp near Lj4 Lj4: jmp near Lj2 Lj2: jmp near Lj0 Lj0: push dword 0 call _exit leave ret --- der QuellCode schaut wie folgt aus: ... var1 = 10 //var2 = 1 if var1 = var2 showmessage("ist 5") elseif 5 = 7 showmessage("juhu 5") elseif 5 = 5 showmessage("nuja halt 7") showmessage("ok") else showmessage("ist nicht 5") endif ...
  10. Hallo Miteinander! Ich bin gerade dabei einen Compiler zu schreiben. Wie kann ich den Ausdruck: ident '=' expr (Zeile: 218) also: variable = 12 in Assembler umsetzen? Als Grundlage soll folgender Yacc Source dienen: nopaste.info - free nopaste script and service Für Anregungen und Informationen bin ich jedem dankbar. MfG paule22
  11. Hallo Ihr beiden, unter nopaste.info - free nopaste script and service habe ich meine Bemühungen von heute morgen gepostet. Ich meinte mit endlos Tiefe, das geschachtelte IF ELSEIF ELSE ENDIF Anweisungen zu realisieren. Der Code funktioniert fast, mit der Ausnahme, das unter dem EndIF stehende Anweisungen nicht mehr behandelt werden z.B.: if 2 = 2 zwei.ontimer = ok if 4 = 4 vierzwei.ontimer = ok4 else zweiff.ontimer = false4 endif // hier wird der code irgendwie abgeschnitten zweidrei.ontimer = ok2 else zwei.ontimer = false endif könnt ihr mal bitte ein Auge drauf werfen? Danke! Die yacc Software kann unter: Albert Gräf's Homepage geladen werden. Gruß paule P.S.: per yacc übersetzt, müssen ein paar Zeilen ersetzt werden ... Zeile 65: type YYSType = record yylbl : lbl ; end(*YYSType*); Zeile 932 bis 936 auskommentieren .... : (* if yysp>yymaxdepth then begin yyerror('yyparse stack overflow'); goto abort; end; *) Und ja, Andy, ich will einen 32 Bit code basteln ... nasm.exe
  12. Hallo, wie kann ich eine (endlos) Tiefenschleife programmieren, die IF expr = expr code ELSEIF code ELSE code ENDIF Programmcode ausgeben kann? Zweck: Compilerbau, x86 32-Bit Assembler Output. Danke für Infos und Codebeispiele paule22 P.S: Hier der momentane Code : function TParserClass.handle_if: Boolean; label label_if, start_if; var c: char; cs,s2: String; l,i,b: integer; begin start_if: if_counter := if_counter+1; if_counter_tmp := if_counter; c := skip_white_space; if c in ['_','A'..'Z','a'..'z'] then begin ident_str := c; scan_ident; cs := ident_str; c := skip_white_space; if c = '=' then begin c := skip_white_space; if (c >= '0') and (c <= '9') then begin num_str := c; scan_num; s2 := FActiveClass+':'+FActiveObject; i := FEventCodeOutput.IndexOf(s2); if i > -1 then begin if if_counter > 1 then TStringList(FEventCodeOutput.Objects).Add(#9+'mov dword eax, ' + num_str); TStringList(FEventCodeOutput.Objects).Add(#9+'cmp dword eax, [@v_' + cs + ']'); TStringList(FEventCodeOutput.Objects).Add(#9+'jne near Lv_'+inttostr(if_counter)); l := yylex; if l = TOK_THEN then begin label_if: l := yylex; if l = TOK_ELSE then begin end else if l = TOK_ENDIF then begin TStringList(FEventCodeOutput.Objects).Add('Lv_'+inttostr(if_counter)+':'); end else if l = TOK_SHOWMESSAGE then begin handle_showmessage; TStringList(FEventCodeOutput.Objects).Add('Lv_'+inttostr(if_counter)+':'); dec(if_counter); l := yylex; if l = TOK_ELSE then begin TStringList(FEventCodeOutput.Objects).Add(#9+'jmp Lv_'+inttostr(if_counter)); end else if l = TOK_SHOWMESSAGE then showmessage('msfg') else if l = TOK_ENDIF then begin TStringList(FEventCodeOutput.Objects).Add(#9+'jmp Lv_'+inttostr(if_counter)); end else handle_parser_code(l); //goto label_if; end; end; end; end; end; end; end(*handle_if*);
  13. Hallo, arbeite gerade mit VC6 Autoren Edition ... habe von folgenden Link Code gesaugt ... flipcode - Programming a Virtual File System Leider kann ich daraus keine EXE erstellen, da der Linker mekkert, das uafxcw-lib nicht gefunden werden konnte. Habe SP6 aufgespielt, und er mekkert immer noch :-( Habe im Netz geschaut, konnte aber keinen DownloadLink finden. Hilfe!!! Wer kennt dieses Problem und kann helfen? Danke paule
  14. Hallo, habe vor, eine Client/Server Anwendung zu schreiben, bei der kontinuierlich eine Anfrage erstellt und ein Response erzeugt werden soll. Im konkreten Fall, soll "GET /" am Server ausgelesen werden und dann soll ein Text an den Client zurück geschrieben werden. Aber das klappt irgendwie nicht ... kann mich da einer bitte helfen Danke schonmal. ... ///////////// // mserver.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #include <netdb.h> #define BUF_SIZ 4096 int send_request(const int sock, const char *hostname) { char request[BUF_SIZ]; snprintf(request, sizeof(request), "GET /\r\n" "Host: %s\r\n" "\r\n\r\n", hostname); if (send(sock, request, strlen(request), 0) == -1) { perror("send() failed"); return 1; } return 0; } int view_response(const int sock) { char response[BUF_SIZ]; int bytes; while((bytes = recv(sock, response, sizeof(response), 0)) > 0) fwrite(response, 1, bytes, stdout); if (bytes < 0) { perror("recv() failed"); return 1; } return 0; } int main(int argc, char *argv[]) { struct hostent *host; struct sockaddr_in addr; int s; if (argc < 2) { fprintf(stderr, "usage: %s <host>\n", argv[0]); return 1; } if (!inet_aton(argv[1], &addr.sin_addr)) { host = gethostbyname(argv[1]); if (!host) { herror("gethostbyname() failed"); return 2; } addr.sin_addr = *(struct in_addr*)host->h_addr; } s = socket(PF_INET, SOCK_STREAM, 0); if (s == -1) { perror("socket() failed"); return 3; } printf("connecting to %s:7000...", inet_ntoa(addr.sin_addr)); fflush(stdout); addr.sin_port = htons(7000); addr.sin_family = AF_INET; if (connect(s, (struct sockaddr*)&addr, sizeof(addr)) == -1) { perror("connect() failed"); return 4; } puts("ok."); if (send_request(s, argv[1])) return 5; if (view_response(s)) return 6; close(s); return 0; } ///////////////////////////////////////////// // mclient.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #define BUF_SIZ 4096 int handle_client(const int sock) { char buffer[BUF_SIZ], puffer[200], *p, pget[126]; int bytes; strcpy(puffer,""); strcpy(pget,"GET /"); while((bytes = recv(sock, buffer, sizeof(buffer), 0)) > 0) strcat(puffer,buffer); p = strstr(puffer,pget); fprintf(stderr,"puffer = %s\n",p); if (strlen(p) > 0) { strcpy(buffer,"Hallo getter :-)\r\n"); send(sock, buffer, strlen(buffer), 0); } else { strcpy(buffer,"NOT FOUND\r\n"); send(sock, buffer, strlen(buffer), 0); } return 0; } int main(void) { int s, c, addr_len; struct sockaddr_in addr; s = socket(PF_INET, SOCK_STREAM, 0); if (s == -1) { perror("socket() failed"); return 1; } addr.sin_addr.s_addr = INADDR_ANY; addr.sin_port = htons(7000); addr.sin_family = AF_INET; if (bind(s, (struct sockaddr*)&addr, sizeof(addr)) == -1) { perror("bind() failed"); return 2; } if (listen(s, 3) == -1) { perror("listen() failed"); return 3; } for(; { addr_len = sizeof(addr); c = accept(s, (struct sockaddr*)&addr, &addr_len); if (c == -1) { perror("accept() failed"); continue; } printf("Client from %s\n", inet_ntoa(addr.sin_addr)); handle_client(c); close(c); } close(s); return 0; } [/code]
  15. Hallo, ich bekomme folgende Ausgabe: c=a+b*c, a=4.94066e-324, b=9.88131e-324, c=0 c=a+b*c, a=4.94066e-324, b=9.88131e-324, c=0 nach der Übersetzung (Netwide Assembler und MinGW gcc): nasm -fwin32 z1.s gcc -o z1.exe z1.obj woran kann dss liegen, das so komische werte rauskommen??? hier der code (auch nachzulesen unter: Sample nasm programs ) BITS 32 extern _printf %macro pabc 1 ; a "simple" print macro section .data .str db %1,0 ; %1 is macro call first actual parameter section .text ; push onto stack backwards push dword [c+4] ; double c (bottom) push dword [c] ; double c push dword [b+4] ; double b (bottom) push dword ; double b push dword [a+4] ; double a (bottom) push dword [a] ; double a push dword .str ; users string push dword fmt ; address of format string call _printf ; Call C function add esp,32 ; pop stack 8*4 bytes %endmacro section .data fmt: db "%s, a=%g, b=%g, c=%g",10,0 a: dq 1 b: dq 2 five: dq 5.0 ; constant 5.0 section .bss ; unitialized space c: resq 1 ; reserve a 64-bit word section .text global _main _main: @l1: fld qword [a] fld qword fld qword [c] fmulp faddp pabc "c=a+b*c" mov eax, 0 leave ret Am Ende der Anwendung wird auch ein Speicherzugriffs Meldung von Windows ausgespuckt *pfui ...
  16. Hallo Freunde, wie kann ich eigentlich aus einer TForm GUI Anwendung Texte in Form von HTML-Code ausgeben. Kann ich überhaupt gleichzeitig GUI und CGI (Apache) Programme laufen lassen? Für CodeSchnippsel bin ich sehr dankbar!!! Gruß Jens
  17. Hallo Gemeinde wie kann ich mit den indy9 componenten (Delphi) einen IRC-Server programmieren. Also das ComponentObjekt habe ich bereits auf eine Form gebracht. im Event "onExecute" habe ich Athread.connection.writeln('test '); geschrieben...das wird auch an den Cllient (Mirc) gesendet. Aber dann hält der Server an und am Client ist 2mal zu lesen "not recognized" Was mach ích da falsch? Hat vielleicht mit der implementierung zu tun .. hat jemand vielleicht ein deutsches RFC? paule
  18. Hallo Leute, ich habe probleme mit den abspeichern einer TreeView-Liste in einer THKStreams Liste. TreeView.SaveToFile funktoniert, jedoch erhalte ich ms.Size <= 0 , wenn ich savetostream anwende. ansonsten sollen noch die Nodes den text anzeigen, der wiederrum in einen THKStream-Eintrag geschrieben wurde, angeziegt wird.... unter http://nopaste.php-q.net/233565 könnt ihr den aktuellen Code finden .... Vielen Dank Für Eure Hilfe
  19. Hallo ihr lieben, hat einer von euch vielleicht ein-zwei beispiele für signal handling unter linux? wäre net, wenn ihr mir das erklären könnt, wie das geht, das man von Programm A aus ein signal an Programm B sendet. Vielen Dank schonmal paule
  20. Hallo Gemeinde, kann mir einer von euch mal erklären, wie ich die CORBA Beispiele zum laufen bekomme? Ich sitze hier vor Delphi 7 Corba/idl2pas/account dos beispiel und komme nicht weiter. Irgendjemand erzählte mir, das ich irgendwas importieren muss und Rêchte vergeben muss. Doch wie mache ich das? Wäre schön wenn jemand schreibt wie man den server und dann den client zum laufen bringt. Danke schonmal
  21. Hallo Gemeinde, kann mir einer sagen, wie ich die Zahlen 1.2 und 1.3 addieren, multiplizieren und subtrahieren kann dividiert natürlich auch. Auch: wie ist es möglich, diese beiden Zahlen als Parameter an ein Unterprogramm zu übergeben. Mit Ganzzahlen geht das einfach so: push 1 push 2 call _addieren aber mit Zahlen mit Komma ????? das ganze sollte für einen Anfänger in Assembler sein. Tuts auch gern lesbar .. Jens
  22. Hallo, also es sollen 2 oder mehrere MDIChild Forms angezeigt werden (innerhalb einer MDIForm). dann sollen die Fenster mit Linien verbunden werden - so wie man das bei Access her kennt (Beziehungen).
  23. Hallo ich habe ein MDI Fenster (Form1), in dem ich dann zwei weitere MDIChild Fenster (Form2) öffne. Wenn ich nun per Form1.Repaint in Form2.WindowPosChange (TMessage) mache, wird a) Canvas.FillRect(ClientRect) nicht ordentlich gezeichnet, erst wenn ich das Fenster (Form1) Maxi und dann Minimire oder umgekehrt wird der Canvas richtig gemalt. Der Canvas wird immer vom MDIChild Fenster Left,Top aus und dann 200,300 Pixel weit gezeichnet. und nicht von 0,0 an bis Width, Height (Form1). Wenn ich nun das MDIChild Fenster Form2 verschiebe, dann wird auch nicht die Linie so gezeichent wie sie sein soll, erst wieder beim Maxi und Miniminimiren wird odnungsgemäß gezeichnet. Hier der Code den ich verwende: procedure TForm1.FormPaint(Sender: TObject); begin if MDIChildCount > 1 then begin Canvas.Pen.Color := clRed; Canvas.Brush.Color := clRed; Canvas.FillRect(Rect(0,0,Form1.Width,Form1.Height)); 1.Canvas.Pen.Color := clBlack; Canvas.MoveTo((MDIChildren[0] as TForm2).Left-20,(MDIChildren[0] as TForm2).Top-20); Canvas.LineTo((MDIChildren[0] as TForm2).Left-20,(MDIChildren[0] as TForm2).Top-20); Canvas.LineTo((MDIChildren[1] as TForm2).Left-20,(MDIChildren[1] as TForm2).Top-20); end else begin Canvas.Pen.Color := clRed; Canvas.Brush.Color := clRed; Canvas.FillRect(Rect(0,0,Form1.Width,Form1.Height)); Canvas.Pen.Color := clBlack; Canvas.MoveTo(100,100); Canvas.LineTo((MDIChildren[0] as TForm2).Left-20,(MDIChildren[0] as TForm2).Top-20); end; end; Tform2 Klasse: private: procedure WMPosChange(var Message: TWMWindowPosChanging); message WM_WINDOWPOSCHANGING; procedure TForm2.WMPosChange(var Message: TWMWindowPosChanging); begin // with PWindowPos(TMessage(Message).lParam)^ do // Flags:=Flags or SWP_NOMOVE; Form1.Repaint; end; Für Lösungen für dieses doofe Problem (also das ordnungsgemäße Zeichnen) bin ich euch Dankbar Mfg paule
  24. paule22

    Eine OOD Frage

    Vielen Dank für Eure Antworten.
  25. Hallo, Wir haben eine Gruppe von Studenten, die einen Vollzeit und die anderen Teilzeit. Beide haben eine Matrikelnummer. Aber sie unterscheiden sich in der Anzahl der Wochenstunden und andere Attributen. Wir wollen nun eine Liste über alle Studenten ausdrucken. Nun zur Frage: Wie muss das oder müssen die Objekte aussehen, die die Studenten repräsentieren? Hinweis: Aus einem Teilzeitstudenten kann ein Vollzeitstudent werden und umgekehrt. Und das auch mehrmals. Wie schaut die Lösung aus ? Bitte keinen Quellcode posten, sondern verbale Beschreibungen ... Viel Spass paule22

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...