Autor Beitrag
Xearox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: Mi 23.12.09 23:23 
Liebes Delphi Forum


Also, ich bin neu einsteiger in Delphi, bzw. habe noch nicht soviel auf dem Kasten.
Nun habe ich mal eine Frage...

Ich möchte gerne, aus dem Internet mehrere Daten in Delphi einfügen.
die daten sehen so aus:

0 [Klasse B] B B|001| Kleiner_Nils WA

es handelt sich hierbei um ein Browsergame, wo ich mir gerne ein Programm schreiben will, welches

1.)
durch einfügen dieser Daten, selbständig eine Datei (Excel-Datei) erstellt, welches diese Daten Automatisch speichert.
Durch ein TEdit soll der Sektor angegeben werden, da man nur die daten, die oben stehen, Kopieren kann,
also wie ich es unten angegeben habe, sprich diese"06-00" müsste man selber eintragen.

2.)
ein zweites Programm soll nun diese Daten auslesen, und Grafisch darstellen.
Also in etwa so:

PlanetenCoordinate----------PlanetenKlasse--------Spieler--------Allianz
06-00-00--------------------Klasse B--------------Xearox---------Assassins
06-00-03--------------------Klasse B--------------Xearox---------Assassins
06-01-15--------------------Klasse F--------------Fragma---------WA
06-02-30--------------------Klasse E--------------Fragma---------WA


so, dies halt ohne die"Bindestriche" Sprich es soll mir eine Liste ausgeben, die so Sortiert ist...

3.)
Es soll eine such funktion geben, mit der man nach Spielern suchen kann, und deren Koordinaten anzuzeigen.
Das gleiche gilt für die Allianz

4.)[Wird sicherlich ein sehr schwieriger Punkt für mich sein, da ich noch Einsteiger bin]
Es soll die möglichkeit bestehen, diese Daten auf meinem Webspace Server(mein eigener) per FTP selbstständig hochzuladen.
Hier die Einzelnen Punkte was ich damit meine...

-Daten werden auf Server hochgeladen
-Daten werden bei Programmstart von Server geladen
-Daten werden aktuallisiert(vorhandene Daten bleiben bestehen, neue daten werden hinzugefügt)
-Daten werden nach erfolgreicher Aktuallisierung wieder zum Server hoch geladen
-Das Programm soll auch von den anderen Membern in der Allianz benutz werden dürfen


5.)[Der Letze Punkt und der ist mir Persöhnlich am wichtigsten für die Sicherheit]
Um auf diese Daten zugreifen zu können, muss bei Programm Start der Benutzer und ein Passwort abgefragt werden.
Es soll eine Datei auf dem Server angelegt werden, welche verschlüsselt ist, damit kein fremder auf diese Daten zugreifen kann.
Das Programm soll diese Daten entschlüsseln, den Benutzername und das Passwort überprüfen
und dann das Programm freigeben.



Also, das ist eine Menge, aber ich habe direkt eine ToDo liste für mich aufgeschrieben, es heißt ja "Learning by Doing"
Das was ich hier wissen möchte sind die Punkte: 1,2 und 3


Wäre hier jemand bereit, mir ein wenig dabei zu helfen?
Und mir zu erklären, wie ich das am Besten schaffen und lernen kann?



Vielen Danke

Gruß Xearox
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Do 24.12.09 05:20 
Ähm, erlaubt das Browsergame solches automatisiertes auslesen von den daten? wenn nicht, können wir dir hier nicht helfen, da wir keinem helfen gegen geltende AGBs zu verstoßen.

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Xearox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: Do 24.12.09 13:59 
Admin U2 [348/405]
[Adminband: Herr des Spiels] [Eiserne Faust: Moderator im Forum] [Großkreuz des Eisernen Kreuzes: Seit 250 Tagen dabei (451 Tage)] [Speed-Veteran: 3 Speed-Runden gespielt (5 Runden)]

[Admin U2]
#1 03.11.09 21:10:31
edit: 03.11.09 21:12:21 Diese Runde sind ja so einige Leute von mir verwarnt worden und andere sind nicht erwischt worden obwohl der Beschiss klar war.
Ich habe keine größeren Strafen ausgesprochen weil es eben ein Speeduni ist was resettet wird.


Lange rede kurzer Sinn.

Die nächtsten Speedrunden werden Krawallrunden. Heißt! Keine Kontrollen meinerseits, allerdings!! Beleidigungen und ähnliches werde ich ahnden!!

Hasta luego ^^


----------------------------------------------------------------------------------------------------


Das ist ein auszug aus dem Forum von diesem game....

Also, es gelten keine Regeln die nächsten Runden.
Xearox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: Sa 26.12.09 15:11 
kann mir jetzt jemand hier helfen?
Xearox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: Di 29.12.09 16:58 
kann mir hier keiner weiter helfen?

so mindestens, wie ich aus einer txt datei, daten auslesen kann.

in der datei steht zum beispiel:

title="00-00-00"

wie kann ich nun in delphi das auslesen das nur diese daten ausgelesen werden?
Astat
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 75
Erhaltene Danke: 1

Windows 2000
D6, D7, D2007, Lazarus
BeitragVerfasst: Di 29.12.09 20:34 
user profile iconXearox hat folgendes geschrieben Zum zitierten Posting springen:
kann mir hier keiner weiter helfen?

so mindestens, wie ich aus einer txt datei, daten auslesen kann.

in der datei steht zum beispiel:

title="00-00-00"

wie kann ich nun in delphi das auslesen das nur diese daten ausgelesen werden?


Hallo Xearox, anbei eine von vielen Varianten, sinnvoll bei Dateien < 10 MB

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Button2Click(Sender: TObject);
var
  ls: TStrings;
  i: integer;
begin
  ls := TStringList.Create;
  ls.LoadFromFile('c:\meineTextDatei.txt');

  for i := 0 to ls.Count - 1 do begin
    memo1.Lines.Add(ls.Strings[i]);
  end;

  ls.Free;
end;


lg. Astat
Xearox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: Mi 30.12.09 02:21 
okay...das läuft soweit...

Wie bekomme ich nun nur die Daten angezeigt, welche ich will...
Also wie oben im beispiel...

In der TxT steht folgendes als Beispiel:

<a coords="60031" href="#">|004|</a></td><td title="07-00-01" align="center" width="33%">

wie bekomme ich nun daraus folgende Daten.

Title="07-00-01" und am anfang dieses |004|

gibt es da eine möglichkeit genau diese daten nur angezeigt zu bekommen?

oder muss ich erst mal soweit die txt so verändern, das die daten, welche ich auslesen will, den selben Trennpunkt haben.
Beispiel " xxxxx "
oder geht das auch so?
FinnO
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1331
Erhaltene Danke: 123

Mac OSX, Arch
TypeScript (Webstorm), Kotlin, Clojure (IDEA), Golang (VSCode)
BeitragVerfasst: Mi 30.12.09 02:40 
Zitat:
<a coords="60031" href="#">|004|</a></td><td title="07-00-01" align="center" width="33%">

naja, du suchst mit posEx; (uses strUtils) nach title=" und dann halt mit offset nach ", nutzt copy und kriegst das ergbnis. Dazu sollte hier im Forum genug zum abgucken sein.
Xearox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: Di 05.01.10 15:53 
kann jemand einen code reinstellen...
find nichts dergleichen...
doch schon was gefunden, doch kann da mit nichts anfangen...

wre einer so nett, und würd mich das erklären, die code funktioniert?
Astat
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 75
Erhaltene Danke: 1

Windows 2000
D6, D7, D2007, Lazarus
BeitragVerfasst: Di 05.01.10 16:47 
user profile iconXearox hat folgendes geschrieben Zum zitierten Posting springen:
kann jemand einen code reinstellen...
find nichts dergleichen...
doch schon was gefunden, doch kann da mit nichts anfangen...

wre einer so nett, und würd mich das erklären, die code funktioniert?


Hallo Xearox, zeig bitte mal die ganze Textdate, und schreib nochmals was Du daraus alles genau brauchst.

lg. Astat
Xearox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: Mi 06.01.10 00:04 
<b>29</b></td><td class="" style="border: 0pt none ;" align="center" height="40" width="40"><img title="Klasse B" style="max-width: 40px;" src="skins/std_skin/planets/s_class9.png"></td><td class="" style="border: 0pt none ;" align="left" width="20"><a style="text-decoration: none; font-weight: normal;" href="#">B</a></td><td class="" style="border: 0pt none ;" align="left">31-04-29</td><td class="" style="border: 0pt none ;" align="center" width="100"><a style="text-decoration: none;" href="#">baron</a></td><td class="" style="border: 0pt none ;" align="center" width="60"><a style="text-decoration: none;" href="#">DSC</a>

so, das ist der code...

ich brauche:

<b>29</b>
title="Klasse B"
align="left">31-04-29< //ist der planeten name,und nicht die richtigen coords
href="#">baron</a>
href="#">DSC</a>


das sind die daten.
Das ding ist, sobald ich die koords mit rein nehme, wird das ganze universum markiert, und wenn ich dann den quelltext anzeige lasse, nun ja, das sind hunderte reihen...
Astat
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 75
Erhaltene Danke: 1

Windows 2000
D6, D7, D2007, Lazarus
BeitragVerfasst: Mi 06.01.10 01:40 
Moderiert von user profile iconNarses: Komplett-Zitat des letzten Beitrags entfernt.

Also, wenn dein geposteter Text stimmt, ist die einfachste Möglichkeit die:

ausblenden volle Höhe Delphi-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:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
function GetTagValueFromString(const ATag: string; AString: string): string;
var
  i: integer;
begin
  result := '';
  i := 1;
  Delete(AString, 1, Pos(ATag, AString) + Length(ATag) -1);
  while (AString[i] <> '<'do begin
    result := result  + AString[i];
    inc(i);
  end;
end;

function GetMultiValueFromString(const ATag: string; AString: string): string;
var
  i: integer;
begin
  result := '';
  Delete(AString, 1, Pos(ATag, AString) + Length(ATag) -1);
  while Pos(ATag, AString) <> 0 do begin
    i := 1;
    Delete(AString, 1, Pos(ATag, AString) + Length(ATag) -1);
    while (AString[i] <> '<'do begin
      result := result  + AString[i];
      inc(i);
    end;
    result := result + #13#10;
  end;
end;

function GetTitleFromString(const ATitle: string; AString: string): string;
var
  i: integer;
begin
  result := '';
  i := 1;
  Delete(AString, 1, Pos(ATitle, AString) + Length(ATitle) -1);
  while (AString[i] <> '"'do begin
    result := result  + AString[i];
    inc(i);
  end;
end;

begin
  showMessage(GetTagValueFromString('<b>', Memo1.Text));
  showMessage(GetTitleFromString('title="', Memo1.Text));
  showMessage(GetTagValueFromString('align="left">', Memo1.Text));
  showMessage(GetMultiValueFromString('href="#">', Memo1.Text));
end.


lg. Astat
Xearox Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 260
Erhaltene Danke: 3



BeitragVerfasst: Mo 11.01.10 04:13 
also, ich habe ein Tipp mit einem HTML Parser bekommen...
jedoch google ich danach, und verstehe null komma nix...

hat da jemand eine idee für einen parser?
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mo 11.01.10 08:01 
Brauchst du an der Stelle nicht unbedingt. Sollte die Seite (korrektes) XHTML sein, kannst du einen der vielen XML-Parser hernehmen, da findet sich im Forum was. SGML parst sich doch etwas schwieriger.

Da der Teil vor und nach dem gesuchten Block bekannt und vor allem konstant ist, kannst du auch per Pos, PosEx & Copy die relevanten Teile rauspflücken.

Der Code von user profile iconAstat ist zwar nicht ganz optimal (ich würde hier was spezielles schreiben statt mit allgemeinen Funktionen was zu basteln), aber zeigt doch die Richtung.

Geht immer da drum: Anfang finden (Pos(Ex)), Interessanten Teil kopieren, von da an weiter suchen.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."