AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Pointer auf Record aus Funktion freigeben
Thema durchsuchen
Ansicht
Themen-Optionen

Pointer auf Record aus Funktion freigeben

Ein Thema von Sko · begonnen am 30. Aug 2006 · letzter Beitrag vom 31. Aug 2006
 
Benutzerbild von Sko
Sko

Registriert seit: 11. Sep 2005
327 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Pointer...mal wieder

  Alt 30. Aug 2006, 20:41
Ok, hier mal komplett:
HauptFenster
Delphi-Quellcode:
unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, XPMan, TSRemoteImport, ExtCtrls, JvComponent,
  JvTrayIcon;

type
  TMainForm = class(TForm)
    XPManifest1: TXPManifest;
    GroupBox1: TGroupBox;
    LStatus: TLabel;
    Button1: TButton;
    Button2: TButton;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    LIP: TLabel;
    LChannels: TLabel;
    LUser: TLabel;
    LProgStatus: TLabel;
    GroupBox3: TGroupBox;
    LAktChannel: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    LAnzUserChannel: TLabel;
    Label6: TLabel;
    LCodec: TLabel;
    Tray: TJvTrayIcon;
    Label7: TLabel;
    LNick: TLabel;
    PopupTimer: TTimer;
    Label8: TLabel;
    LserverName: TLabel;
    Label9: TLabel;
    LServerLabel: TLabel;
    Label10: TLabel;
    LMaxUser: TLabel;
    Button3: TButton;
    procedure Button3Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure PopupTimerTimer(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  MainForm: TMainForm;

implementation

uses Popup;

{$R *.dfm}
Function DisplayResult( Res: Integer ) : Boolean;
Var
  ErrorMessage: array[0..1023] of Char;
begin
  if res=0 then Result := True
  else
  begin
    tsrGetLastError(@ErrorMessage, SizeOf(ErrorMessage));
    ShowMessage(ErrorMessage);
    Result := False;
  end;
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  LProgStatus.Caption := 'Initialisiere Remote-Lib...';
  case InitTSRemoteLibrary(true) of
    0 : LProgStatus.Caption := 'Remote-Lib geladen';
    -1: LProgStatus.Caption := 'Remote-Lib bereits initialisiert';
    -2: LProgStatus.Caption := 'Fehler beim Laden der Remote-Lib';
    -3: LProgStatus.Caption := 'interner Funktionsfehler';
  end;
end;

procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CloseTsRemoteLibrary;
end;

procedure TMainForm.PopupTimerTimer(Sender: TObject);
var
  IDs : Array[0..1023] of Integer;
  Records : Integer;
  i: integer;
  PopupForm: TPopupForm;
  PlayerInfo: TtsrPlayerInfo;
begin
  Records := 1024;
  if tsrGetSpeakers( @IDs, @records) <> 0 then exit;
  if Records > 0 then
  for i :=0 to Records-1 do
  begin
    tsrGetPlayerInfoByID(IDs[i], @PlayerInfo);
    with TPopupForm.Create(Application) do
    begin
      LName.Caption := PlayerInfo.NickName;
      Top := round(Screen.DesktopHeight/2) - (19*(i + 1));
      Left := Screen.DesktopWidth - 150;
      FormStyle := fsStayOnTop;
      Show;
    end;
  end;
end;

procedure TMainForm.Button2Click(Sender: TObject); //<--hier gibts das gleiche Problem, allerdings wird hier keine Form erstellt
var
  ServerInfo: TtsrServerInfo;
  UserInfo: TtsrUserInfo;
begin
    if tsrGetServerInfo(@ServerInfo) <> 0 then
    begin
      LStatus.Caption := 'nicht verbunden';
      LStatus.Font.Color := clblack;
      LIP.Caption := '-';
      LServerName.Caption := '-';
      LChannels.Caption := '-';
      LUser.Caption := '-';
      exit;
    end
    else
    begin
      LStatus.Caption := 'verbunden';
      LStatus.Font.Color := clgreen;
      LIP.Caption := ServerInfo.ServerIp;
      LServerName.Caption := ServerInfo.ServerName;
      LServerLabel.Caption := ServerInfo.ServerPlatform;
      LChannels.Caption := IntToStr(ServerInfo.ChannelCount);
      LUser.Caption := IntToStr(ServerInfo.PlayerCount);
      LMaxUser.Caption := IntToStr(ServerInfo.ServerMaxUsers);
    end;
    if tsrGetUserInfo(@UserInfo) <> 0 then
    begin
      LNick.Caption := '-';
      LAktChannel.Caption := '-';
      LAnzUserChannel.Caption := '-';
      LCodec.Caption := '-';
      exit;
    end
    else
    begin
      LNick.Caption := UserInfo.Player.NickName;
      LAktChannel.Caption := UserInfo.Channel.Name;
      LAnzUserChannel.Caption := IntToStr(UserInfo.Channel.PlayerCountInChannel);
      case UserInfo.Channel.Codec of
         0: LCodec.Caption := 'CELP 5.1 Kbit';
         1: LCodec.Caption := 'CELP 6.4 Kbit';
         2: LCodec.Caption := 'GSM 14.8 Kbit';
         3: LCodec.Caption := 'GSM 16.4 Kbit';
         4: LCodec.Caption := 'CELP Windows 5.2 Kbit';
         5: LCodec.Caption := 'Speex 3.4 Kbit';
         6: LCodec.Caption := 'Speex 5.2 Kbit';
         7: LCodec.Caption := 'Speex 7.2 Kbit';
         8: LCodec.Caption := 'Speex 9.3 Kbit';
         9: LCodec.Caption := 'Speex 12.3 Kbit';
        10: LCodec.Caption := 'Speex 16.3 Kbit';
        11: LCodec.Caption := 'Speex 19.5 Kbit';
        12: LCodec.Caption := 'Speex 25.9 Kbit';
      end;
    end;
end;
procedure TMainForm.Button3Click(Sender: TObject);
begin
  if Button3.Caption = 'Aktivierenthen
  begin
    PopupTimer.Enabled := true;
    Button3.Caption := 'Deaktivieren';
  end
  else
  begin
    PopupTimer.Enabled := false;
    Button3.Caption := 'Aktivieren';
  end;
end;

end.
Und die Import-Unit für die DLL ist im Anhang.
Angehängte Dateien
Dateityp: pas tsremoteimport_110.pas (28,6 KB, 13x aufgerufen)
MfG Sko
Zitat von Phoenix:
[OT]Phoenix guckt in die Glaskugel, zuckt mit den Flügelspitzen, krächzt etwas von wegen 'Boden' und 'Scherben' und schubbst die Kugel in Richtung Tischkante.[/OT]
Rockbox
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz