Autor Beitrag
MerlinElMago
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Do 11.07.02 00:18 
hallöchen,
ich bin gerade dabei mir ein paar wincgi exe zu schreiben. ich habe wert darauf gelegt dass es konsole applikationen sein sollen denn ich möchte KEINE komponenten sondern eigenen code benutzen. dabei bin ich auf ein paar fragen gestossen die ich gerne beantwortet hätte und vielleicht kann mir ja jemand helfen.

1. wenn ich auf dem server einen simples programm laufen lasse wie z.b. ein guestbook. das wäre in etwa so:
ausblenden Quelltext
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:
program Project;

{$APPTYPE CONSOLE}

uses
  SysUtils;

Var
  TXT
    :TextFile;

begin
  { TODO -oUser -cConsole Main : Insert code here }

  AssignFile(TXT, 'GUESTBOOK.TXT');
  Append(TXT);
    WriteLN(TXT, 'IP: '+GetEnvironmentVariable('REMOTE_ADDR'));
    WriteLN(TXT, 'Message: '+GetEnvironmentVariable('QUERY_STRING'));
    WriteLN(TXT, DateTimeToStr(NOW));
  CloseFile(TXT);

  WriteLN('content-type: text/html');
  WriteLN;
  WriteLN('<HTML><BODY>');
  WriteLN('Ihr Beitrag ist archiviert worden.');
  WriteLN('</BODY></HTML>');
end.

dieses mogul würde etwa so aufgerufen:
www.addresse.com/cgi...rojekt.exe?Nachricht

wie sieht es denn aus wenn zwei (oder vier oder fünf oder...) user GLEICHZEITIG dieses programm aufrufen? haben BEIDE GLEICHZEITIG zugriff auf den file oder bekomme ich als return einen errorcode? ich müsste es schon 100%ig wissen. leider kann ich diese situation nicht sicher in meinem netzwerk nachstellen...
ich betreibe eine PWS von microsoft auf einem intranet server unter winme.

2. wie bekomme ich alle felder eines cookies heraus? wenn ich einen cookie mit
ausblenden Quelltext
1:
 WriteLN('Set Cookie: COOKIE1=FELD1; COOKIE2=FELD2;');					
setze?

mein problem ist nämlich dass sobald ich mit GetEnvironmentVariable('HTTP_COOKIE') die felder wieder auslesen möchte, ich immer nur den ersten cookie zurück bekomme...

gruss
merlin :lol:
SMI
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 106

Win95-2003 / Debian / Suse
D1/D3/D6/D7
BeitragVerfasst: Do 22.08.02 19:19 
Eine Environment String Lösung
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
VAR
 DosEnv: PChar;
BEGIN
 DosEnv := GetEnvironmentStrings;
 // Dieser String ist mit einer Doppelnull Terminiert!
 While DosEnv^ <> #0 do
  begin
   // In einen String konvertieren, also von
   // der aktuellen Position bis zur ersten Null
   Showmessage(STRING(DosEnv));
   //Speicherposion um die Länge des Strings 
   //+ Nullterminierung erhöhen um die Null
   // zu überspringen, eine Doppelnull bedeutet hier das Ende!
   Inc(DosEnv, StrLen(DosEnv)+1);
  end;
end;

Für den Dateizugriff empfehle ich dir die API Funktionen ReadFile und WriteFile zu verwenden, die sind Multithread fähig. Darüberhinaus kann man hier mit Hilfe von LockFile einzelne Regionen in einer Datei sperren.

Ich hoffe ich habe geholfen!

Gruß SMI